[SCM] libav/experimental: Split out code that auto-chooses a default pix_fmt/sample_fmt in their own functions.

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 17:05:27 UTC 2013


The following commit has been merged in the experimental branch:
commit aa1de0d9ed2bf135f9878995a3e909c4777bba52
Author: Ronald S. Bultje <rsbultje at gmail.com>
Date:   Tue Mar 30 19:37:07 2010 +0000

    Split out code that auto-chooses a default pix_fmt/sample_fmt in their own
    functions.
    
    Originally committed as revision 22731 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/ffmpeg.c b/ffmpeg.c
index 951b0da..30a8050 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -472,6 +472,36 @@ static int av_exit(int ret)
     return ret;
 }
 
+static void choose_sample_fmt(AVStream *st, AVCodec *codec)
+{
+    if(codec && codec->sample_fmts){
+        const enum SampleFormat *p= codec->sample_fmts;
+        for(; *p!=-1; p++){
+            if(*p == st->codec->sample_fmt)
+                break;
+        }
+        if(*p == -1)
+            st->codec->sample_fmt = codec->sample_fmts[0];
+    }
+}
+
+static void choose_pixel_fmt(AVStream *st, AVCodec *codec)
+{
+    if(codec && codec->pix_fmts){
+        const enum PixelFormat *p= codec->pix_fmts;
+        for(; *p!=-1; p++){
+            if(*p == st->codec->pix_fmt)
+                break;
+        }
+        if(*p == -1
+           && !(   st->codec->codec_id==CODEC_ID_MJPEG
+                && st->codec->strict_std_compliance <= FF_COMPLIANCE_INOFFICIAL
+                && (   st->codec->pix_fmt == PIX_FMT_YUV420P
+                    || st->codec->pix_fmt == PIX_FMT_YUV422P)))
+            st->codec->pix_fmt = codec->pix_fmts[0];
+    }
+}
+
 static int read_ffserver_streams(AVFormatContext *s, const char *filename)
 {
     int i, err;
@@ -3189,19 +3219,7 @@ static void new_video_stream(AVFormatContext *oc)
         video_enc->pix_fmt = frame_pix_fmt;
         st->sample_aspect_ratio = video_enc->sample_aspect_ratio;
 
-        if(codec && codec->pix_fmts){
-            const enum PixelFormat *p= codec->pix_fmts;
-            for(; *p!=-1; p++){
-                if(*p == video_enc->pix_fmt)
-                    break;
-            }
-            if(*p == -1
-               && !(   video_enc->codec_id==CODEC_ID_MJPEG
-                    && video_enc->strict_std_compliance <= FF_COMPLIANCE_INOFFICIAL
-                    && (   video_enc->pix_fmt == PIX_FMT_YUV420P
-                        || video_enc->pix_fmt == PIX_FMT_YUV422P)))
-                video_enc->pix_fmt = codec->pix_fmts[0];
-        }
+        choose_pixel_fmt(st, codec);
 
         if (intra_only)
             video_enc->gop_size = 0;
@@ -3326,16 +3344,7 @@ static void new_audio_stream(AVFormatContext *oc)
         audio_enc->channel_layout = channel_layout;
         if (avcodec_channel_layout_num_channels(channel_layout) != audio_channels)
             audio_enc->channel_layout = 0;
-
-        if(codec && codec->sample_fmts){
-            const enum SampleFormat *p= codec->sample_fmts;
-            for(; *p!=-1; p++){
-                if(*p == audio_enc->sample_fmt)
-                    break;
-            }
-            if(*p == -1)
-                audio_enc->sample_fmt = codec->sample_fmts[0];
-        }
+        choose_sample_fmt(st, codec);
     }
     nb_ocodecs++;
     audio_enc->sample_rate = audio_sample_rate;

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list