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

Unified Diff: media/ffmpeg/ffmpeg_common.cc

Issue 7203002: Adding ChunkDemuxer implementation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address CR comments Created 9 years, 6 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/ffmpeg/ffmpeg_common.cc
diff --git a/media/ffmpeg/ffmpeg_common.cc b/media/ffmpeg/ffmpeg_common.cc
index 7af9635b6bcfd4c3e22aa69a87ade04de6745fb1..c86acb5654ada247d6069092e6d71866b665fe2b 100644
--- a/media/ffmpeg/ffmpeg_common.cc
+++ b/media/ffmpeg/ffmpeg_common.cc
@@ -206,4 +206,28 @@ int GetSurfaceWidth(AVStream* stream) {
return width & ~1;
}
+void DestroyAVFormatContext(AVFormatContext* format_context) {
+ DCHECK(format_context);
+
+ // Iterate each stream and destroy each one of them.
+ int streams = format_context->nb_streams;
+ for (int i = 0; i < streams; ++i) {
+ AVStream* stream = format_context->streams[i];
+
+ // The conditions for calling avcodec_close():
+ // 1. AVStream is alive.
+ // 2. AVCodecContext in AVStream is alive.
+ // 3. AVCodec in AVCodecContext is alive.
+ // Notice that closing a codec context without prior avcodec_open() will
+ // result in a crash in FFmpeg.
+ if (stream && stream->codec && stream->codec->codec) {
+ stream->discard = AVDISCARD_ALL;
+ avcodec_close(stream->codec);
+ }
+ }
+
+ // Then finally cleanup the format context.
+ av_close_input_file(format_context);
+}
+
} // namespace media

Powered by Google App Engine
This is Rietveld 408576698