mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-07 16:28:38 +09:00
parent
b586913598
commit
2531de02eb
85 changed files with 68 additions and 1357 deletions
|
|
@ -1505,20 +1505,6 @@ DOMAudioNodeMediaStream::CreateTrackUnionStreamAsInput(nsPIDOMWindowInner* aWind
|
|||
DOMHwMediaStream::DOMHwMediaStream(nsPIDOMWindowInner* aWindow)
|
||||
: DOMLocalMediaStream(aWindow, nullptr)
|
||||
{
|
||||
#ifdef MOZ_WIDGET_GONK
|
||||
if (!mWindow) {
|
||||
NS_ERROR("Expected window here.");
|
||||
mPrincipalHandle = PRINCIPAL_HANDLE_NONE;
|
||||
return;
|
||||
}
|
||||
nsIDocument* doc = mWindow->GetExtantDoc();
|
||||
if (!doc) {
|
||||
NS_ERROR("Expected document here.");
|
||||
mPrincipalHandle = PRINCIPAL_HANDLE_NONE;
|
||||
return;
|
||||
}
|
||||
mPrincipalHandle = MakePrincipalHandle(doc->NodePrincipal());
|
||||
#endif
|
||||
}
|
||||
|
||||
DOMHwMediaStream::~DOMHwMediaStream()
|
||||
|
|
@ -1545,31 +1531,8 @@ DOMHwMediaStream::Init(MediaStream* stream, OverlayImage* aImage)
|
|||
{
|
||||
SourceMediaStream* srcStream = stream->AsSourceStream();
|
||||
|
||||
#ifdef MOZ_WIDGET_GONK
|
||||
if (aImage) {
|
||||
mOverlayImage = aImage;
|
||||
} else {
|
||||
Data imageData;
|
||||
imageData.mOverlayId = DEFAULT_IMAGE_ID;
|
||||
imageData.mSize.width = DEFAULT_IMAGE_WIDTH;
|
||||
imageData.mSize.height = DEFAULT_IMAGE_HEIGHT;
|
||||
|
||||
mOverlayImage = new OverlayImage();
|
||||
mOverlayImage->SetData(imageData);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (srcStream) {
|
||||
VideoSegment segment;
|
||||
#ifdef MOZ_WIDGET_GONK
|
||||
const StreamTime delta = STREAM_TIME_MAX; // Because MediaStreamGraph will run out frames in non-autoplay mode,
|
||||
// we must give it bigger frame length to cover this situation.
|
||||
|
||||
RefPtr<Image> image = static_cast<Image*>(mOverlayImage.get());
|
||||
mozilla::gfx::IntSize size = image->GetSize();
|
||||
|
||||
segment.AppendFrame(image.forget(), delta, size, mPrincipalHandle);
|
||||
#endif
|
||||
srcStream->AddTrack(TRACK_VIDEO_PRIMARY, 0, new VideoSegment());
|
||||
srcStream->AppendToTrack(TRACK_VIDEO_PRIMARY, &segment);
|
||||
srcStream->AdvanceKnownTracksTime(STREAM_TIME_MAX);
|
||||
|
|
@ -1579,30 +1542,13 @@ DOMHwMediaStream::Init(MediaStream* stream, OverlayImage* aImage)
|
|||
int32_t
|
||||
DOMHwMediaStream::RequestOverlayId()
|
||||
{
|
||||
#ifdef MOZ_WIDGET_GONK
|
||||
return mOverlayImage->GetOverlayId();
|
||||
#else
|
||||
/*** STUB ***/
|
||||
return -1;
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
DOMHwMediaStream::SetImageSize(uint32_t width, uint32_t height)
|
||||
{
|
||||
#ifdef MOZ_WIDGET_GONK
|
||||
if (mOverlayImage->GetSidebandStream().IsValid()) {
|
||||
OverlayImage::SidebandStreamData imgData;
|
||||
imgData.mStream = mOverlayImage->GetSidebandStream();
|
||||
imgData.mSize = IntSize(width, height);
|
||||
mOverlayImage->SetData(imgData);
|
||||
} else {
|
||||
OverlayImage::Data imgData;
|
||||
imgData.mOverlayId = mOverlayImage->GetOverlayId();
|
||||
imgData.mSize = IntSize(width, height);
|
||||
mOverlayImage->SetData(imgData);
|
||||
}
|
||||
#endif
|
||||
|
||||
SourceMediaStream* srcStream = GetInputStream()->AsSourceStream();
|
||||
StreamTracks::Track* track = srcStream->FindTrack(TRACK_VIDEO_PRIMARY);
|
||||
|
||||
|
|
@ -1610,23 +1556,6 @@ DOMHwMediaStream::SetImageSize(uint32_t width, uint32_t height)
|
|||
return;
|
||||
}
|
||||
|
||||
#ifdef MOZ_WIDGET_GONK
|
||||
// Clear the old segment.
|
||||
// Changing the existing content of segment is a Very BAD thing, and this way will
|
||||
// confuse consumers of MediaStreams.
|
||||
// It is only acceptable for DOMHwMediaStream
|
||||
// because DOMHwMediaStream doesn't have consumers of TV streams currently.
|
||||
track->GetSegment()->Clear();
|
||||
|
||||
// Change the image size.
|
||||
const StreamTime delta = STREAM_TIME_MAX;
|
||||
RefPtr<Image> image = static_cast<Image*>(mOverlayImage.get());
|
||||
mozilla::gfx::IntSize size = image->GetSize();
|
||||
VideoSegment segment;
|
||||
|
||||
segment.AppendFrame(image.forget(), delta, size, mPrincipalHandle);
|
||||
srcStream->AppendToTrack(TRACK_VIDEO_PRIMARY, &segment);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -1635,9 +1564,6 @@ DOMHwMediaStream::SetOverlayImage(OverlayImage* aImage)
|
|||
if (!aImage) {
|
||||
return;
|
||||
}
|
||||
#ifdef MOZ_WIDGET_GONK
|
||||
mOverlayImage = aImage;
|
||||
#endif
|
||||
|
||||
SourceMediaStream* srcStream = GetInputStream()->AsSourceStream();
|
||||
StreamTracks::Track* track = srcStream->FindTrack(TRACK_VIDEO_PRIMARY);
|
||||
|
|
@ -1646,34 +1572,10 @@ DOMHwMediaStream::SetOverlayImage(OverlayImage* aImage)
|
|||
return;
|
||||
}
|
||||
|
||||
#ifdef MOZ_WIDGET_GONK
|
||||
// Clear the old segment.
|
||||
// Changing the existing content of segment is a Very BAD thing, and this way will
|
||||
// confuse consumers of MediaStreams.
|
||||
// It is only acceptable for DOMHwMediaStream
|
||||
// because DOMHwMediaStream doesn't have consumers of TV streams currently.
|
||||
track->GetSegment()->Clear();
|
||||
|
||||
// Change the image size.
|
||||
const StreamTime delta = STREAM_TIME_MAX;
|
||||
RefPtr<Image> image = static_cast<Image*>(mOverlayImage.get());
|
||||
mozilla::gfx::IntSize size = image->GetSize();
|
||||
VideoSegment segment;
|
||||
|
||||
segment.AppendFrame(image.forget(), delta, size, mPrincipalHandle);
|
||||
srcStream->AppendToTrack(TRACK_VIDEO_PRIMARY, &segment);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
DOMHwMediaStream::SetOverlayId(int32_t aOverlayId)
|
||||
{
|
||||
#ifdef MOZ_WIDGET_GONK
|
||||
OverlayImage::Data imgData;
|
||||
|
||||
imgData.mOverlayId = aOverlayId;
|
||||
imgData.mSize = mOverlayImage->GetSize();
|
||||
|
||||
mOverlayImage->SetData(imgData);
|
||||
#endif
|
||||
/*** STUB ***/
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue