diff options
author | hajimehoshi <hajimehoshi@chromium.org> | 2015-10-19 01:04:35 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-10-19 08:05:22 +0000 |
commit | 3d5d4e33ef71fecdafaaa920ad5a1b4fe03d13fb (patch) | |
tree | 0270e4cd1f2d6f686cb548f1e14c8c7354337e3f /media/formats/webm | |
parent | 8cfd9626b3e4ad0fa3822d3ca9da5791d6804247 (diff) | |
download | chromium_src-3d5d4e33ef71fecdafaaa920ad5a1b4fe03d13fb.zip chromium_src-3d5d4e33ef71fecdafaaa920ad5a1b4fe03d13fb.tar.gz chromium_src-3d5d4e33ef71fecdafaaa920ad5a1b4fe03d13fb.tar.bz2 |
Revert of Fail playback when VideoDecoderConfig has invalid extra data. (patchset #14 id:260001 of https://codereview.chromium.org/1396583002/ )
Reason for revert:
This causes a compile error on Mac (crbug.com/544748).
Original issue's description:
> Fail playback when VideoDecoderConfig has invalid extra data.
>
> Invalid extra data occurs when:
> (extra_data_ptr == NULL) != (extra_data_size == 0)
>
> We were previously crashing (CHECK) on this condition.
> {Audio|Video}DecoderConfig now use a vector and pointer/size issues
> are detected/handled in the path of creating the FFmpegDemuxerStream.
>
> BUG=517163
> TEST=New unit test. Manually verified graceful failure for MSE & SRC=
> R=bbudge@chromium.org, gunsch@chromium.org, sandersd@chromium.org, xhwang@chromium.org
>
> Committed: https://chromium.googlesource.com/chromium/src/+/54d0dc5450e6d8d6a7cd80bd9fa512a41999e08e
TBR=xhwang@chromium.org,bbudge@chromium.org,lcwu@chromium.org,gunsch@chromium.org,sandersd@chromium.org,chcunningham@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=517163
Review URL: https://codereview.chromium.org/1409353003
Cr-Commit-Position: refs/heads/master@{#354735}
Diffstat (limited to 'media/formats/webm')
-rw-r--r-- | media/formats/webm/webm_audio_client.cc | 10 | ||||
-rw-r--r-- | media/formats/webm/webm_video_client.cc | 10 |
2 files changed, 17 insertions, 3 deletions
diff --git a/media/formats/webm/webm_audio_client.cc b/media/formats/webm/webm_audio_client.cc index 995746a4..bde7233 100644 --- a/media/formats/webm/webm_audio_client.cc +++ b/media/formats/webm/webm_audio_client.cc @@ -66,6 +66,13 @@ bool WebMAudioClient::InitializeConfig( sample_format = kSampleFormatF32; } + const uint8* extra_data = NULL; + size_t extra_data_size = 0; + if (codec_private.size() > 0) { + extra_data = &codec_private[0]; + extra_data_size = codec_private.size(); + } + // Convert |codec_delay| from nanoseconds into frames. int codec_delay_in_frames = 0; if (codec_delay != -1) { @@ -80,7 +87,8 @@ bool WebMAudioClient::InitializeConfig( sample_format, channel_layout, samples_per_second, - codec_private, + extra_data, + extra_data_size, is_encrypted, base::TimeDelta::FromMicroseconds( (seek_preroll != -1 ? seek_preroll : 0) / 1000), diff --git a/media/formats/webm/webm_video_client.cc b/media/formats/webm/webm_video_client.cc index 29b7dca..2d3f43b 100644 --- a/media/formats/webm/webm_video_client.cc +++ b/media/formats/webm/webm_video_client.cc @@ -88,10 +88,16 @@ bool WebMVideoClient::InitializeConfig( return false; } gfx::Size natural_size = gfx::Size(display_width_, display_height_); + const uint8* extra_data = NULL; + size_t extra_data_size = 0; + if (codec_private.size() > 0) { + extra_data = &codec_private[0]; + extra_data_size = codec_private.size(); + } config->Initialize(video_codec, profile, format, COLOR_SPACE_HD_REC709, - coded_size, visible_rect, natural_size, codec_private, - is_encrypted); + coded_size, visible_rect, natural_size, extra_data, + extra_data_size, is_encrypted); return config->IsValidConfig(); } |