Index: media/ffmpeg/ffmpeg_common.cc |
diff --git a/media/ffmpeg/ffmpeg_common.cc b/media/ffmpeg/ffmpeg_common.cc |
index 12a4ec9cd4d93709eeaf1bacf2c96ac1b324d31e..cc7dfc28ba0e2c15a6d36d381de622777844a456 100644 |
--- a/media/ffmpeg/ffmpeg_common.cc |
+++ b/media/ffmpeg/ffmpeg_common.cc |
@@ -382,6 +382,12 @@ void AVStreamToVideoDecoderConfig( |
if (key) |
is_encrypted = true; |
+ AVDictionaryEntry* webm_alpha = |
+ av_dict_get(stream->metadata, "alpha_mode", NULL, 0); |
+ if (webm_alpha && !strcmp(webm_alpha->value, "1")) { |
+ format = VideoFrame::YV12A; |
+ } |
+ |
config->Initialize(codec, |
profile, |
format, |
@@ -490,6 +496,8 @@ VideoFrame::Format PixelFormatToVideoFormat(PixelFormat pixel_format) { |
case PIX_FMT_YUV420P: |
case PIX_FMT_YUVJ420P: |
return VideoFrame::YV12; |
+ case PIX_FMT_YUVA420P: |
+ return VideoFrame::YV12A; |
default: |
DVLOG(1) << "Unsupported PixelFormat: " << pixel_format; |
} |
@@ -502,6 +510,8 @@ PixelFormat VideoFormatToPixelFormat(VideoFrame::Format video_format) { |
return PIX_FMT_YUV422P; |
case VideoFrame::YV12: |
return PIX_FMT_YUV420P; |
+ case VideoFrame::YV12A: |
+ return PIX_FMT_YUVA420P; |
default: |
DVLOG(1) << "Unsupported VideoFrame::Format: " << video_format; |
} |