[FFmpeg-devel] [PATCH] avformat/flvdec: move set bit_rate from parse AMF OBJECT to create_stream
Steven Liu
lq at chinaffmpeg.org
Fri Nov 25 11:18:43 EET 2016
before patch:
Stream #0:0: Video: h264 (High), yuv420p(progressive), 1280x714 [SAR 1:1 DAR 640:357], 25 fps, 25 tbr, 1k tbn, 50 tbc
after patch:
Stream #0:0: Video: h264 (High), yuv420p(progressive), 1280x714 [SAR 1:1 DAR 640:357], 2576 kb/s, 25 fps, 25 tbr, 1k tbn, 50 tbc
Signed-off-by: Steven Liu <lq at chinaffmpeg.org>
---
libavformat/flvdec.c | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c
index 3812994..a04280d 100644
--- a/libavformat/flvdec.c
+++ b/libavformat/flvdec.c
@@ -64,6 +64,8 @@ typedef struct FLVContext {
int last_keyframe_stream_index;
int keyframe_count;
+ int64_t video_bit_rate;
+ int64_t audio_bit_rate;
int64_t *keyframe_times;
int64_t *keyframe_filepositions;
int missing_streams;
@@ -140,11 +142,14 @@ static AVStream *create_stream(AVFormatContext *s, int codec_type)
&& s->streams[0]->codecpar->codec_type != AVMEDIA_TYPE_SUBTITLE
&& s->streams[1]->codecpar->codec_type != AVMEDIA_TYPE_SUBTITLE))
s->ctx_flags &= ~AVFMTCTX_NOHEADER;
- if (codec_type == AVMEDIA_TYPE_AUDIO)
+ if (codec_type == AVMEDIA_TYPE_AUDIO) {
+ st->codecpar->bit_rate = flv->audio_bit_rate;
flv->missing_streams &= ~FLV_HEADER_FLAG_HASAUDIO;
- if (codec_type == AVMEDIA_TYPE_VIDEO)
+ }
+ if (codec_type == AVMEDIA_TYPE_VIDEO) {
+ st->codecpar->bit_rate = flv->video_bit_rate;
flv->missing_streams &= ~FLV_HEADER_FLAG_HASVIDEO;
-
+ }
avpriv_set_pts_info(st, 32, 1, 1000); /* 32 bit pts in ms */
flv->last_keyframe_stream_index = s->nb_streams - 1;
@@ -534,12 +539,12 @@ static int amf_parse_object(AVFormatContext *s, AVStream *astream,
amf_type == AMF_DATA_TYPE_BOOL) {
if (!strcmp(key, "duration"))
s->duration = num_val * AV_TIME_BASE;
- else if (!strcmp(key, "videodatarate") && vpar &&
+ else if (!strcmp(key, "videodatarate") &&
0 <= (int)(num_val * 1024.0))
- vpar->bit_rate = num_val * 1024.0;
- else if (!strcmp(key, "audiodatarate") && apar &&
+ flv->video_bit_rate = num_val * 1024.0;
+ else if (!strcmp(key, "audiodatarate") &&
0 <= (int)(num_val * 1024.0))
- apar->bit_rate = num_val * 1024.0;
+ flv->audio_bit_rate = num_val * 1024.0;
else if (!strcmp(key, "datastream")) {
AVStream *st = create_stream(s, AVMEDIA_TYPE_SUBTITLE);
if (!st)
--
2.9.3 (Apple Git-75)
More information about the ffmpeg-devel
mailing list