lavc: add a sample_rate field to AVFrame.
authorNicolas George <nicolas.george@normalesup.org>
Sat, 28 Apr 2012 12:07:50 +0000 (14:07 +0200)
committerNicolas George <nicolas.george@normalesup.org>
Sat, 28 Apr 2012 18:14:48 +0000 (20:14 +0200)
The field is filled with the codec context information.

libavcodec/avcodec.h
libavcodec/options.c
libavcodec/utils.c

index fed72bb..ba51ec1 100644 (file)
@@ -1267,6 +1267,15 @@ typedef struct AVFrame {
      */
     int64_t channel_layout;
 
+    /**
+     * sample rate of the audio frame
+     * - encoding: unused
+     * - decoding: read by user.
+     * Code outside libavcodec should access this field using:
+     * av_opt_ptr(avcodec_get_frame_class(), frame, "sample_rate")
+     */
+    int sample_rate;
+
 } AVFrame;
 
 struct AVCodecInternal;
index 173729c..3731b1f 100644 (file)
@@ -240,6 +240,7 @@ static const AVOption frame_options[]={
 {"height", "", FOFFSET(height), AV_OPT_TYPE_INT, {.dbl = 0 }, 0, INT_MAX, 0},
 {"format", "", FOFFSET(format), AV_OPT_TYPE_INT, {.dbl = -1 }, 0, INT_MAX, 0},
 {"channel_layout", "", FOFFSET(channel_layout), AV_OPT_TYPE_INT64, {.dbl = 0 }, 0, INT64_MAX, 0},
+{"sample_rate", "", FOFFSET(sample_rate), AV_OPT_TYPE_INT, {.dbl = 0 }, 0, INT_MAX, 0},
 {NULL},
 };
 
index 85c6351..4b6ddea 100644 (file)
@@ -1547,6 +1547,8 @@ int attribute_align_arg avcodec_decode_audio4(AVCodecContext *avctx,
                 frame->format = avctx->sample_fmt;
             if (!frame->channel_layout)
                 frame->channel_layout = avctx->channel_layout;
+            if (!frame->sample_rate)
+                frame->sample_rate = avctx->sample_rate;
         }
 
         avctx->pkt = NULL;