[FFmpeg-cvslog] rmenc: do not use AVCodecContext.frame_size

Anton Khirnov git at videolan.org
Fri Jan 1 15:52:12 CET 2016


ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Sat Nov 15 16:48:59 2014 +0100| [1f008f34d5b2b5f6217521747e7acfe3efc0e666] | committer: Anton Khirnov

rmenc: do not use AVCodecContext.frame_size

It will not be set if the stream codec context is not the encoding
context. Use av_get_audio_frame_duration() instead, it should work for
all audio codecs supported by the muxer.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1f008f34d5b2b5f6217521747e7acfe3efc0e666
---

 libavformat/rmenc.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/libavformat/rmenc.c b/libavformat/rmenc.c
index ad2c17d..bbfd550 100644
--- a/libavformat/rmenc.c
+++ b/libavformat/rmenc.c
@@ -185,9 +185,10 @@ static int rv10_write_header(AVFormatContext *ctx,
 
         if (stream->enc->codec_type == AVMEDIA_TYPE_AUDIO) {
             int coded_frame_size, fscode, sample_rate;
+            int frame_size = av_get_audio_frame_duration(stream->enc, 0);
             sample_rate = stream->enc->sample_rate;
             coded_frame_size = (stream->enc->bit_rate *
-                                stream->enc->frame_size) / (8 * sample_rate);
+                                frame_size) / (8 * sample_rate);
             /* audio codec info */
             avio_write(s, ".ra", 3);
             avio_w8(s, 0xfd);
@@ -315,6 +316,7 @@ static int rm_write_header(AVFormatContext *s)
 
     for(n=0;n<s->nb_streams;n++) {
         AVStream *st = s->streams[n];
+        int frame_size;
 
         s->streams[n]->id = n;
         codec = s->streams[n]->codec;
@@ -327,7 +329,8 @@ static int rm_write_header(AVFormatContext *s)
         switch(codec->codec_type) {
         case AVMEDIA_TYPE_AUDIO:
             rm->audio_stream = stream;
-            stream->frame_rate = (float)codec->sample_rate / (float)codec->frame_size;
+            frame_size = av_get_audio_frame_duration(codec, 0);
+            stream->frame_rate = (float)codec->sample_rate / (float)frame_size;
             /* XXX: dummy values */
             stream->packet_max_size = 1024;
             stream->nb_packets = 0;



More information about the ffmpeg-cvslog mailing list