| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This CL enables SurfaceView fullscreen video with the unified media pipeline
in cases where we use the AVDA deferred rendering strategy today.
* There's a new media interface called SurfaceManager with two methods:
CreateFullscreenSurface() and NaturalSizeChanged().
* SurfaceManager is implemented by RendererSurfaceViewManager, which is a
RenderFrameObserver, and BrowserSurfaceViewManager, which is created for
each RenderFrame by MediaWebContentsObserverAndroid.
* BrowserSurfaceViewManager creates a ContentVideoView in response to a
CreateFullscreenSurface message, and registers it in a surface map that the
decoder can look up in the GPU process.
* WMPI interacts with SurfaceManager on behalf of the decoder. It passes
GpuVideoDecoder a callback for requesting surfaces which it calls before
initializing VDAs.
* In response to the callback, if the player is in fullscreen WMPI will pass
the request to the SurfaceManager which will return the surface id to GVD. If
the player is not in fullscreen WMPI will return a null surface id.
* When GVD gets a surface id back it completes its initialization by calling
VDA::Initialize with the surface id and the VDA will render to the given
surface.
* WMPI records that it got a surface request callback so that it knows that
future fullscreen transitions will require a restart of the decoder in order
to switch surfaces.
* A future CL will allow us to switch the surface dynamically without
requiring a restart.
BUG=533630
Review URL: https://codereview.chromium.org/1655083002
Cr-Commit-Position: refs/heads/master@{#376068}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As described in crbug.com/524582, we observed a reduction in power
consumption when this format is used to display videos directly using
the WindowServer.
The downside of this format is that a conversion from YUV to RGB will
be performed on the GPU using GL when the VideoFrame has to be used
from GL.
BUG=524582
Review URL: https://codereview.chromium.org/1686443002
Cr-Commit-Position: refs/heads/master@{#375720}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This CL generalizes the pattern used by content::SavePackageId and
cc::SurfaceId and puts it into //base/id_type.h. Using this pattern for
gpu::CommandBufferId should hopefully help avoid bugs like the mixup
fixed by https://crrev.com/365437.
BUG=514815, 565545
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
TBR=wolenetz@chromium.org, sky@chromium.org
Review URL: https://codereview.chromium.org/1548443002
Cr-Commit-Position: refs/heads/master@{#375620}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
https://codereview.chromium.org/1686443002/ )
Reason for revert:
Revert to see if the bot recovers.
Original issue's description:
> Enable NV12 VideoFrames on Mac.
>
> As described in crbug.com/524582, we observed a reduction in power
> consumption when this format is used to display videos directly using
> the WindowServer.
>
> The downside of this format is that a conversion from YUV to RGB will
> be performed on the GPU using GL when the VideoFrame has to be used
> from GL.
>
> BUG=524582
TBR=ccameron@chromium.org,dalecurtis@chromium.org,dcastagna@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=524582
Review URL: https://codereview.chromium.org/1684123003
Cr-Commit-Position: refs/heads/master@{#374847}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As described in crbug.com/524582, we observed a reduction in power
consumption when this format is used to display videos directly using
the WindowServer.
The downside of this format is that a conversion from YUV to RGB will
be performed on the GPU using GL when the VideoFrame has to be used
from GL.
BUG=524582
Review URL: https://codereview.chromium.org/1686443002
Cr-Commit-Position: refs/heads/master@{#374825}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Videos are uploaded to GPU using half-floats if supported, otherwise
they are downshifted to regular 8-bit textures before uploading. No
dithering is done, except for whatever GL_DITHER might do. (Which
is probably nothing.)
BUG=445071
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Committed: https://crrev.com/074c4287f2625860b2a9eb437b97f1f1788f8f4b
Cr-Commit-Position: refs/heads/master@{#373691}
Review URL: https://codereview.chromium.org/1599533002
Cr-Commit-Position: refs/heads/master@{#374221}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
https://codereview.chromium.org/1599533002/ )
Reason for revert:
Commit was failing content_browsertests on Mac 10.10:
failures:
Http/MediaTest.VideoBearHighBitDepthMp4/0
File/MediaTest.VideoBearHighBitDepthMp4/0
First failure:
https://build.chromium.org/p/chromium.mac/builders/Mac10.10%20Tests/builds/5222
Original issue's description:
> Add support for 9- and 10-bit h264 videos.
>
> Videos are uploaded to GPU using half-floats if supported, otherwise
> they are downshifted to regular 8-bit textures before uploading. No
> dithering is done, except for whatever GL_DITHER might do. (Which
> is probably nothing.)
>
> BUG=445071
> CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
>
> Committed: https://crrev.com/074c4287f2625860b2a9eb437b97f1f1788f8f4b
> Cr-Commit-Position: refs/heads/master@{#373691}
TBR=fbarchard@chromium.org,erg@chromium.org,reed@chromium.org,piman@chromium.org,danakj@chromium.org,asvitkine@chromium.org,dalecurtis@chromium.org,nasko@chromium.org,fsamuel@chromium.org
BUG=445071
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Review URL: https://codereview.chromium.org/1674703002
Cr-Commit-Position: refs/heads/master@{#373824}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Videos are uploaded to GPU using half-floats if supported, otherwise
they are downshifted to regular 8-bit textures before uploading. No
dithering is done, except for whatever GL_DITHER might do. (Which
is probably nothing.)
BUG=445071
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Review URL: https://codereview.chromium.org/1599533002
Cr-Commit-Position: refs/heads/master@{#373691}
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously AVDA would always configure MediaCodec with a SurfaceTexture.
Now, to support efficient fullscreen video, it can render to a
SurfaceView too.
BUG=533630
Review URL: https://codereview.chromium.org/1639963002
Cr-Commit-Position: refs/heads/master@{#373365}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Pass to the renderer a list of texture targets, one per GpuMemoryBuffer
format, via a command line argument.
In this way GMBVFP can pick whatever GMB format it needs to use and bind
to the correct texture target.
This is similar to what we do for content (kContentImageTextureTarget).
kContentImageTextureTarget can't be used since the buffer usage could
differ from the buffer usage in GMBVFP.
Once all GMB formats supports persistent usage and we can consolidate
GPU_READ_CPU_READ_WRITE_PERSISTENT and GPU_READ_CPU_READ_WRITE this
code can go away and we can use just one command line switch.
BUG=524582
Review URL: https://codereview.chromium.org/1605423002
Cr-Commit-Position: refs/heads/master@{#371644}
|
|
|
|
|
|
|
|
|
| |
BUG=552112
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Review URL: https://codereview.chromium.org/1476523005
Cr-Commit-Position: refs/heads/master@{#369705}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We need them because we use AVDA for EME even for non-acelerated
decoders. This CL reports VP8 and VP9 capabilities for all decoders,
but succeeds AVDA VP8/9 initialization only for the accelerated
ones (as before) or for both accelerated and non-accelerated if the
stream is encrypted.
BUG=577424
Review URL: https://codereview.chromium.org/1583083002
Cr-Commit-Position: refs/heads/master@{#369525}
|
|
|
|
|
|
|
|
|
| |
R=dalecurtis@chromium.org
BUG=514815
Review URL: https://codereview.chromium.org/1443963003
Cr-Commit-Position: refs/heads/master@{#369083}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a function GpuMemoryBuffer::IsInUseByWindowServer to see if a
resource is currently in use by the system. This will only return true
on Mac, where it returns the result of IOSurfaceIsInUse.
Hook this up to cc::ResourceProvider::CanLockForWrite and
InUseByConsumer. These fix the bug where tiles would flicker during
reuse.
BUG=558701
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Review URL: https://codereview.chromium.org/1527483003
Cr-Commit-Position: refs/heads/master@{#368718}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Implemented SetCdm() by retrieving the CDM object from mojo
(it should be MediaDrmBridge), registering this bridge
with nesessary callbacks and postponing the MediaCodec configuration
till we get the MediaCrypto object.
After MediaCrypto object is obtained we configure MediaCodec
and only then report the SetCdm() status by NotifyCdmAttached(bool).
With this approach any failure in MediaCodec creation is reported as
a CDM failure.
BUG=542417
Review URL: https://codereview.chromium.org/1469353010
Cr-Commit-Position: refs/heads/master@{#368679}
|
|
|
|
|
|
|
|
|
|
|
|
| |
This uses an automated script, so it'll catch things the first pass, done by hand, missed.
BUG=138542
TBR=dalecurtis@chromium.org
NOPRESUBMIT=true
Review URL: https://codereview.chromium.org/1542013004
Cr-Commit-Position: refs/heads/master@{#366712}
|
|
|
|
|
|
|
|
|
| |
BUG=138542
TBR=dalecurtis@chromium.org
Review URL: https://codereview.chromium.org/1535193003
Cr-Commit-Position: refs/heads/master@{#366263}
|
|
|
|
|
|
|
|
|
| |
BUG=138542
TBR=dalecurtis@chromium.org
Review URL: https://codereview.chromium.org/1534273002 .
Cr-Commit-Position: refs/heads/master@{#366242}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The android deferred rendering backing strategy cannot always
guarantee a minimum number of outstanding PictureBuffers beyond
one at the client. Failure to do so can cause the pipeline to
hang waiting for more pictures before returning any.
This CL allows the VDA to provide a flag with its SupportedProfiles,
collectively called the VDA Capabilities, that indicates that it
cannot promise to return all of the PictureBuffers at once. In
practice, GpuVideoDecoder uses this flag to always return false from
CanReadWithoutStalling, once picture buffers are assigned.
BUG=531606
Review URL: https://codereview.chromium.org/1490333005
Cr-Commit-Position: refs/heads/master@{#364387}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The VDA on Android (AVDA) requires this info to properly
implement CDM. This CL changes the method
VideoDecodeAccelerator::Initialize() to accept the structure
holding VDA initialization parameters. There are two parameters:
video codec profile and the is_encrypted flag. For Android both
parameters are propagated to GPU process.
BUG=542417
Review URL: https://codereview.chromium.org/1485043002
Cr-Commit-Position: refs/heads/master@{#363127}
|
|
|
|
|
|
|
|
|
|
|
| |
The aim is to make scoped_ptr and std::unique_ptr functionally
identical so scoped_ptr can simply be a typedef.
BUG=554298
Review URL: https://codereview.chromium.org/1445003002
Cr-Commit-Position: refs/heads/master@{#360539}
|
|
|
|
|
|
|
|
|
|
|
| |
This is needed to support encrypted stream handling in VideoDecodeAccelerator
(VDA) implmentations on certain platforms (e.g. Android).
BUG=545099
Review URL: https://codereview.chromium.org/1438063002
Cr-Commit-Position: refs/heads/master@{#359696}
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Make GLImages use GL_RED instead of GL_R8 as the internal format,
because GL_R8 isn't supported as an internal format for most GL
functions and almost all GLES functions.
BUG=533677
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Review URL: https://codereview.chromium.org/1434453008
Cr-Commit-Position: refs/heads/master@{#358225}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In order to help with refactoring old sync points into new sync points,
glWaitSyncPointCHROMIUM() has been changed to accept both the old and
new sync points.
This CL only refactors all the ways we pass around sync points so in
theory shouldn't change any behavior. Once this lands we can then
incrementally change the sync point insertions to the new sync points.
R=piman@chromium.org
BUG=514815
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Review URL: https://codereview.chromium.org/1427543002
Cr-Commit-Position: refs/heads/master@{#357595}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For the frames using GPU memory buffer, the REFERENCE_TIME is lost, and
then WebMediaPlayerMS will not be able to apply rendering algorithm to
enhance the rendering smoothness.
In this CL, we make those frames to carry over the REFERENCE_TIME from
original frame.
BUG=545165
Review URL: https://codereview.chromium.org/1418923006
Cr-Commit-Position: refs/heads/master@{#357156}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Follow-up CL to crrev.com/1425793002. Adds an extra |name|
argument to the memory-infra RegisterDumpProvider methods.
This allow to see the names of the dump providers in the trace
and diagnose dump providers getting stuck or taking more time
than usual.
No further behavioral change is introduced by this CL.
BUG=547764
TBR=xhwang@chromium.org,simonhatch@chromium.org,jochen@chromium.org,shess@chromium.org,piman@chromium.org
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Review URL: https://codereview.chromium.org/1406213005
Cr-Commit-Position: refs/heads/master@{#357089}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The problem with the current usage modes is that we currently use
SCANOUT for anything that doesn't require CPU access. When importing
a buffer we typically don't care about anything but having the GPU
be able to read from it. SCANOUT is not a good description of that
and currently means GPU read/write support.
This patch attempts to make usage more explicit and it solves the
use case where a buffer type can only provide GPU read and not GPU
write support (e.g. SHM fallback). Here are the new usage modes:
- GPU_READ
- GPU_READ_WRITE
- GPU_READ_CPU_READ_WRITE
GPU_READ is useful when importing a buffer and all you care about is
being able to use it for sampling and optionally scanout.
GPU_READ_WRITE is useful for things like WebGL or GPU raster where
we want the ability to write to the buffer using GL and potentially
use it for scanout.
GPU_READ_CPU_READ_WRITE is the usage mode that allows CPU access and
is used for one-copy and zero-copy texture initialization. There's
nothing preventing this mode from also supporting scanout.
- GPU_READ_CPU_READ_WRITE_PERSISTENT
This usage mode indicates that the data will be persistent across
Unmap()/Map() calls but will likely become part of the normal
GPU_READ_CPU_READ_WRITE usage once all buffer types support this.
BUG=538325
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Review URL: https://codereview.chromium.org/1420923005
Cr-Commit-Position: refs/heads/master@{#356108}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before this patch, GMBVFP would copy only visible_rect to
GpuMemoryBuffers.
Unfortunately GMBs can't always be created with visible_rect size
since visible_rect might have dimensions not compatible with the
output format.
With this patch we compute a format compatible coded_rect and we use
that as the new coded rect for copies and the new output VideoFrame.
BUG=544554
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Review URL: https://codereview.chromium.org/1420943002
Cr-Commit-Position: refs/heads/master@{#356090}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
memory(plane); stride(plane)
Relanding http://crrev.com/1401183003 which had a compile
error.
Original reviewers:
TBR=avi@chromium.org, bajones@chromium.org, reveman@chromium.org, dalecurtis@chromium.org, fsamuel@chromium.org, miu@chromium.org
Original CL description:-----------------------------------
GpuMemoryBuffer interface change: Map(**) --> Map() + memory(plane); GetStride(*) --> stride(plane)
And at the same time clean up/simplify/homogeneise
uses of those APIs.
buffer_format_util.cc:RowSizeForBufferFormatChecked()
is only used in unittests and internally to the file, this CL
restricts it to the .cc file. Also a function there is only
used in test --> added ForTesting() suffix.
BUG=542225
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Committed: https://crrev.com/a11ca23b4ae411b4dc6cd8ff755e366680e80776
Cr-Commit-Position: refs/heads/master@{#355396}
Review URL: https://codereview.chromium.org/1412223009
Cr-Commit-Position: refs/heads/master@{#355630}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
memory(plane); stride(plane) (patchset #5 id:610001 of https://codereview.chromium.org/1401183003/ )
Reason for revert:
Broke Win x64 GN compilation:
e:\b\build\slave\win_x64_gn\build\src\components\mus\gles2\mojo_gpu_memory_buffer.cc(78) :error C2220: warning treated as error - no 'object' file generated
e:\b\build\slave\win_x64_gn\build\src\components\mus\gles2\mojo_gpu_memory_buffer.cc(78) : warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data
Original issue's description:
> GpuMemoryBuffer interface change: Map(**) --> Map() + memory(plane); GetStride(*) --> stride(plane)
>
> And at the same time clean up/simplify/homogeneise
> uses of those APIs.
>
> buffer_format_util.cc:RowSizeForBufferFormatChecked()
> is only used in unittests and internally to the file, this CL
> restricts it to the .cc file. Also a function there is only
> used in test --> added ForTesting() suffix.
>
> BUG=542225
> CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
>
> Committed: https://crrev.com/a11ca23b4ae411b4dc6cd8ff755e366680e80776
> Cr-Commit-Position: refs/heads/master@{#355396}
TBR=reveman@chromium.org,avi@chromium.org,bajones@chromium.org,dalecurtis@chromium.org,fsamuel@chromium.org,miu@chromium.org,mcasas@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=542225
Review URL: https://codereview.chromium.org/1409163003
Cr-Commit-Position: refs/heads/master@{#355511}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
GetStride(*) --> stride(plane)
And at the same time clean up/simplify/homogeneise
uses of those APIs.
buffer_format_util.cc:RowSizeForBufferFormatChecked()
is only used in unittests and internally to the file, this CL
restricts it to the .cc file. Also a function there is only
used in test --> added ForTesting() suffix.
BUG=542225
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Review URL: https://codereview.chromium.org/1401183003
Cr-Commit-Position: refs/heads/master@{#355396}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Media used to create its own GL context. This context, that takes up a
few MBs of memory, was used to create textures, mailboxes and syncpoints.
This CL replaces the media context with the shared worker context already
present in RenderThreadImpl. It also makes sure that media drops any reference
to it in the main thread (that's required by the shared worker context.)
This change will also allow media to access the context in a worker thread,
in this way the GL operations won't need to be serialized on the media thread
that might be busy decoding video/audio.
NOTE: media didn't handle GL context lost properly, but simply stopped working
after the first context lost. This CL doesn't fix that and reproduces the same
behavior.
BUG=544547
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Review URL: https://codereview.chromium.org/1369843002
Cr-Commit-Position: refs/heads/master@{#354848}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
MediaStreamVideoRendererSink
Relanding after expanding a DCHECK on CopyFrameToYV12() of wedmediaplayer_ms.cc
TBR=dcastagna@chromium.org, phoglund@chromium.org, mcasas@chromium.org, sievers@chromium.org, xhwang@chromium.org, rationale: this patch is equivalent
to the already LGTMd
Original description ---------------------------------------------------
Use GpuMemoryBufferVideoFramePool for WebMediaPlayerMS and MediaStreamVideoRendererSink
MediaStreamVideoRendererSink is the common sink for video playback where we receive both the local camera capture frame and all the remote capture frames from peer connections. They are all hooked to the MediaStream elements.
This CL follows dcastagna's CL that applies asynchronous copies to WebMediaPlayerimpl [0].
[0] https://codereview.chromium.org/1273943002/
BUG=440843, 503835
TEST=
On Linux:
- With and Without the kUseGpuMemoryBuffersForCapture flag, AppRTC loopback runs as expected.
- With and Without the kEnableGpuMemoryBufferVideoFrames flag, AppRTC loopback runs as expected
Committed: https://crrev.com/d49c3945570e7eff2ce728927f8c9fecd04f3487
Cr-Commit-Position: refs/heads/master@{#353839}
patch from issue 1358883003 at patchset 310001 (http://crrev.com/1358883003#ps310001)
Review URL: https://codereview.chromium.org/1407703003
Cr-Commit-Position: refs/heads/master@{#354087}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
MediaStreamVideoRendererSink"
This reverts commit d49c3945570e7eff2ce728927f8c9fecd04f3487.
The CL breaks WebRtcVideoQualityBrowserTest.MANUAL_TestVideoQuality on
Chromium WebRTC Mac
tester. https://uberchromegw.corp.google.com/i/chromium.webrtc/builders/Mac%20Tester/builds/44376
[9411:1799:1013/151010:FATAL:webmediaplayer_ms.cc(65)] Check failed: frame->format() == media::PIXEL_FORMAT_ARGB || frame->format() == media::PIXEL_FORMAT_XRGB.
0 Chromium Framework 0x0000000108c800a3 base::debug::StackTrace::StackTrace() + 19
1 Chromium Framework 0x0000000108c9b615 logging::LogMessage::~LogMessage() + 69
2 Chromium Framework 0x000000010d35fe66 content::WebMediaPlayerMS::Compositor::ReplaceCurrentFrameWithACopy(media::SkCanvasVideoRenderer*) + 294
3 Chromium Framework 0x000000010d35fbd1 content::WebMediaPlayerMS::pause() + 289
4 Chromium Framework 0x000000010af95906 blink::HTMLMediaElement::updatePlayState() + 246
5 Chromium Framework 0x000000010ae0ccfe blink::ContainerNode::notifyNodeRemoved(blink::Node&) + 94
6 Chromium Framework 0x000000010ae0d20f blink::ContainerNode::removeChildren(blink::SubtreeModificationAction) + 559
7 Chromium Framework 0x000000010b2e6a00 blink::replaceChildrenWithFragment(blink::ContainerNode*, WTF::PassRefPtr<blink::DocumentFragment>, blink::ExceptionState&) + 96
8 Chromium Framework 0x000000010ae6380a blink::Element::setInnerHTML(WTF::String const&, blink::ExceptionState&) + 234
9 Chromium Framework 0x000000010b875892 blink::ElementV8Internal::innerHTMLAttributeSetterCallback(v8::FunctionCallbackInfo<v8::Value> const&) + 386
10 Chromium Framework 0x000000010a2a6dcc v8::internal::FunctionCallbackArguments::Call(void (*)(v8::FunctionCallbackInfo<v8::Value> const&)) + 172
11 Chromium Framework 0x000000010a2cd445 v8::internal::MaybeHandle<v8::internal::Object> v8::internal::HandleApiCallHelper<false>(v8::internal::Isolate*, v8::internal::(anonymous namespace)::BuiltinArguments<(v8::internal::BuiltinExtraArguments)1>&) + 1429
12 Chromium Framework 0x000000010a2ccd98 v8::internal::Builtins::InvokeApiFunction(v8::internal::Handle<v8::internal::JSFunction>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*) + 456
13 Chromium Framework 0x000000010a42f402 v8::internal::Execution::Call(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*) + 1170
14 Chromium Framework 0x000000010a5be988 v8::internal::Object::SetPropertyWithDefinedSetter(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::Handle<v8::internal::Object>) + 120
15 Chromium Framework 0x000000010a5be4df v8::internal::Object::SetPropertyWithAccessor(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::Object>, v8::internal::LanguageMode) + 687
16 Chromium Framework 0x000000010a5d1cad v8::internal::Object::SetPropertyInternal(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::Object>, v8::internal::LanguageMode, v8::internal::Object::StoreFromKeyed, bool*) + 589
17 Chromium Framework 0x000000010a5d1a21 v8::internal::Object::SetProperty(v8::internal::LookupIterator*, v8::internal::Handle<v8::internal::Object>, v8::internal::LanguageMode, v8::internal::Object::StoreFromKeyed) + 49
18 Chromium Framework 0x000000010a56f2ac v8::internal::StoreIC::Store(v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::Object::StoreFromKeyed) + 1068
19 Chromium Framework 0x000000010a57442c v8::internal::Runtime_StoreIC_Miss(int, v8::internal::Object**, v8::internal::Isolate*) + 812
TBR=emircan@chromium.org
Review URL: https://codereview.chromium.org/1398033005 .
Cr-Commit-Position: refs/heads/master@{#353976}
|
|
|
|
|
|
|
|
|
|
|
|
| |
libyuv::CopyPlane uses some low level optmization that memcpy doesn't have.
This patch replaces the memcpy used when copying video frames to I420
GpuMemoryBuffers with libyuv::CopyPlane.
BUG=
Review URL: https://codereview.chromium.org/1400923003
Cr-Commit-Position: refs/heads/master@{#353898}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
MediaStreamVideoRendererSink
MediaStreamVideoRendererSink is the common sink for video playback where we receive both the local camera capture frame and all the remote capture frames from peer connections. They are all hooked to the MediaStream elements.
This CL follows dcastagna's CL that applies asynchronous copies to WebMediaPlayerimpl [0].
[0] https://codereview.chromium.org/1273943002/
BUG=440843, 503835
TEST=
On Linux:
- With and Without the kUseGpuMemoryBuffersForCapture flag, AppRTC loopback runs as expected.
- With and Without the kEnableGpuMemoryBufferVideoFrames flag, AppRTC loopback runs as expected
Review URL: https://codereview.chromium.org/1358883003
Cr-Commit-Position: refs/heads/master@{#353839}
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds memory tracing for GpuMemoryBuffers and graphics resources
used by media in GpuMemoryBufferVideoFramePool.
BUG=
Review URL: https://codereview.chromium.org/1355373003
Cr-Commit-Position: refs/heads/master@{#351152}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
VideoFrame::visible_rect could be different than natural_size when the
VideoFrame is coming from a media stream that is from a camera.
crrev.com/1358883003 is planning to convert the video frames coming from
different media sources.
This CL crops VideoFrame using visible_rect when it gets converted to
a new VideoFrame backed by GpuMemoryBuffers.
BUG=
Review URL: https://codereview.chromium.org/1371683002
Cr-Commit-Position: refs/heads/master@{#351149}
|
|
|
|
|
|
|
|
|
|
|
|
| |
AllocateGpuMemoryBuffer can return null (e.g: when the GPU process is down).
This CL makes sure we don't crash in that case and make the code behave in
the most similar way to when allocations succeed.
BUG=529088
Review URL: https://codereview.chromium.org/1304843005
Cr-Commit-Position: refs/heads/master@{#348738}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
MT21 is a MediaTek proprietary format. MT21 is similar to NV21
except the memory layout and pixel layout (swizzles). YUV 4:2:0.
2x2 VU samples. 12 bits per pixel.
Each image contains two buffers, one for Y plane and one for
interleaved VU plane. Two planes can be non-contiguous in memory.
Suppose image dimension is (width, height)
Plane[0]: Y plane
Start address alignment = 4K bytes
Offset from Buffer[0] start address = 0
Row pitch = ((width+15)/16) * 16
Plane size = Row pitch * (((height+31)/32)*32)
Plane[1]: VU plane
Start address alignment = 4K bytes
Offset from Buffer[1] start address = 0
Row pitch = ((width+15)/16) * 16
Plane size = Row pitch * (((height+31)/32)*32)/2
BUG=chrome-os-partner:44784
TESTS=Play video and run apprtc loopback.
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Review URL: https://codereview.chromium.org/1326153002
Cr-Commit-Position: refs/heads/master@{#348575}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
hardware frames (patchset #6 id:140001 of https://codereview.chromium.org/1307853003/ )"
This reverts commit 9fbd81e3c8adf06f9a77d917050eb99f2cdad3c3.
TBR=dcastagna@chromium.org,sandersd@chromium.org,ccameron@chromium.org,andresantoso@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=524582
Review URL: https://codereview.chromium.org/1332733003
Cr-Commit-Position: refs/heads/master@{#348141}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
frames (patchset #6 id:140001 of https://codereview.chromium.org/1307853003/ )
Reason for revert:
We suspect this CL caused a WebRTC browser test to start failing.
The failures are consistent and started here:
https://build.chromium.org/p/chromium.webrtc/builders/Win7%20Tester/builds/21330
Original issue's description:
> Add support for converting I420 software frames into NV12 hardware frames
>
> Enhance MaybeCreateHardwareFrame() to be able to create a NV12 hardware
> frame backed by a YUV_420_BIPLANAR GpuMemoryBuffer.
>
> This code path is not enabled yet.
>
> BUG=524582
> CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
>
> Committed: https://crrev.com/422d099ed5b8439b92d198deb84d4528c14ccc0c
> Cr-Commit-Position: refs/heads/master@{#347864}
TBR=dcastagna@chromium.org,sandersd@chromium.org,ccameron@chromium.org,andresantoso@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=524582
Review URL: https://codereview.chromium.org/1327243002
Cr-Commit-Position: refs/heads/master@{#348120}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Enhance MaybeCreateHardwareFrame() to be able to create a NV12 hardware
frame backed by a YUV_420_BIPLANAR GpuMemoryBuffer.
This code path is not enabled yet.
BUG=524582
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Review URL: https://codereview.chromium.org/1307853003
Cr-Commit-Position: refs/heads/master@{#347864}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
After asynchronous VideoFrame copies have been added in VideoRendererImpl,
pending_read_ might end up in an inconsistent state.
The problem is that while a VideoFrame copy is in flight, pending_read_ is set
to true.
The video frame stream might be reset while the copy is happening.
Previously the expectation was that pending_read_ would be always false when
OnVideoFrameStreamResetDone was called.
This CL removes the DCHECK and set pending_read_ to false when the video frame
stream is reset.
This CL also adds a sequence_token that is incremented every time the stream is
reset. VideoFrames added with a mismatching sequence token will be discarded.
BUG=
Review URL: https://codereview.chromium.org/1319303005
Cr-Commit-Position: refs/heads/master@{#347234}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
crrev.com/1305153005 and crrev.com/1308643003 added ycbcr_422_image
Chromium extension.
This CL select the correct VideoFrame format used to convert software
to GpuMemoryBuffer video frames based on the availability of the extension.
The internal format used for the images associated to the GMBs has
been corrected accordingly.
BUG=526311
Review URL: https://codereview.chromium.org/1306243010
Cr-Commit-Position: refs/heads/master@{#346828}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This CL merges these 2 enums that overlap and represent pixel formats.
- Moved types that do not exist to media::VideoPixelFormat
- Updated histograms.xml for UMA values
- Updated media_types.mojom for matching mojo enums
- Added kWinSupportedCaptureFormats to capability_list_win.cc such that we are no longer dependant on the order of media::VideoCapturePixelFormat for choosing the preferred type.
BUG=521068, 504160
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Review URL: https://codereview.chromium.org/1301133002
Cr-Commit-Position: refs/heads/master@{#346711}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds support for UYVY as a pixel format for the VideoFrame
backed by GpuMemoryBuffer.
If UYVY is set as format in GpuMemoryBufferVideoFramePool, the source
VideoFrame will be converted during the copy to GMB.
UYVY VideoFrames might get promoted to overlays on Mac.
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
BUG=485859,510252
Review URL: https://codereview.chromium.org/1306693002
Cr-Commit-Position: refs/heads/master@{#344899}
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Added media::PIXEL_FORMAT_UYVY.
Replace gfx::BufferFormat::YUV_420_BIPLANAR with gfx::BufferFormat::UYVY_422.
We plan to use this format to enable video overlays on Mac.
BUG=510252
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel
Review URL: https://codereview.chromium.org/1299973003
Cr-Commit-Position: refs/heads/master@{#344692}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Plane copies from VideoFrames to GpuMemoryBuffers happening in the same thread
as the decoding thread might push the decoding time past the frame time and slow
down the entire video.
This patch adds a TaskRunner to GpuMemoryBufferVideoFramePool that is
used to do the copies asynchronously.
BUG=485859
Review URL: https://codereview.chromium.org/1273943002
Cr-Commit-Position: refs/heads/master@{#344401}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When using the video decoder PPAPI, the most recent version of the ARC extension requires there to be a certain minimum number of picture buffers in flight (allocated but not released). Without a larger pool, ARC video decoding will stall trying to allocate more decoded picture frames than are available by default.
This patch creates a new DEV interface version for the VideoDecoder PPAPI. The new interface simply adds a single new argument to VideoDecoder::Initialize() so that a PPAPI client indicate the minimum number of pictures it needs to function.
In order to implement this minium picture count, the meaning of the ProvidePictureBuffers() interface call used by the video decoder implementations has changed slightly. After making the call to ProvidePictureBuffers() with a given picture buffer size, the subsequent callback via AssignPictureBuffers() includes a std::vector of buffers that might be larger than requested.
I've adjusted the various implementations to handle this change -- most of them previously assumed and asserted that the count was the same.
In particular this meant moving some code around in the V4L2 implementations since they also do some internal allocations based on the number of picture buffers that actually end up being chosen.
BUG=485775
Review URL: https://codereview.chromium.org/1207043002
Cr-Commit-Position: refs/heads/master@{#344391}
|