Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(268)

Unified Diff: media/filters/ffmpeg_demuxer.cc

Issue 12263013: media: Add support for playback of VP8 Alpha video streams (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: minor fixes Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/filters/ffmpeg_demuxer.cc
diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc
index 56929bcf05172823e0aab9b2ba7d8fe64e4c81b2..257d4aa8ea9094447646a2f2cdd6cb9c91065f3a 100644
--- a/media/filters/ffmpeg_demuxer.cc
+++ b/media/filters/ffmpeg_demuxer.cc
@@ -27,6 +27,10 @@
#include "media/filters/ffmpeg_glue.h"
#include "media/filters/ffmpeg_h264_to_annex_b_bitstream_converter.h"
+extern "C" {
+#include "third_party/ffmpeg/libavcodec/avcodec.h"
scherkus (not reviewing) 2013/02/22 23:18:01 this include should go inside ffmpeg_common.h
vignesh 2013/02/25 21:51:42 Done.
+}
+
namespace media {
//
@@ -70,6 +74,11 @@ FFmpegDemuxerStream::FFmpegDemuxerStream(
}
void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) {
+
scherkus (not reviewing) 2013/02/22 23:18:01 remove extra blank line
vignesh 2013/02/25 21:51:42 Done.
+ uint8_t* side_data;
+ int side_data_size = 0;
+ AVPacket* pkt;
+
DCHECK(message_loop_->BelongsToCurrentThread());
if (stopped_ || end_of_stream_) {
@@ -83,11 +92,21 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) {
LOG(ERROR) << "Format conversion failed.";
}
+ // Get the alpha data if any
scherkus (not reviewing) 2013/02/22 23:18:01 nit: I'm sure side data is used for more than just
vignesh 2013/02/25 21:51:42 Done.
+ pkt = packet.get();
+ av_packet_split_side_data(pkt);
+ side_data = av_packet_get_side_data(pkt,
+ AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL,
+ &side_data_size);
+
// If a packet is returned by FFmpeg's av_parser_parse2() the packet will
// reference inner memory of FFmpeg. As such we should transfer the packet
// into memory we control.
scoped_refptr<DecoderBuffer> buffer;
- buffer = DecoderBuffer::CopyFrom(packet->data, packet->size);
+ buffer = DecoderBuffer::CopyFrom(pkt->data, pkt->size);
+ if (side_data_size) {
+ buffer->SetSideData(side_data, side_data_size);
+ }
buffer->SetTimestamp(ConvertStreamTimestamp(
stream_->time_base, packet->pts));
buffer->SetDuration(ConvertStreamTimestamp(

Powered by Google App Engine
This is Rietveld 408576698