Improve codec_tag guessing code.

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
oldabi
Michael Niedermayer 14 years ago
parent 24009f3601
commit 0b9dffc67a
  1. 8
      libavformat/utils.c

@ -25,6 +25,7 @@
#include "avio_internal.h" #include "avio_internal.h"
#include "internal.h" #include "internal.h"
#include "libavcodec/internal.h" #include "libavcodec/internal.h"
#include "libavcodec/raw.h"
#include "libavutil/opt.h" #include "libavutil/opt.h"
#include "metadata.h" #include "metadata.h"
#include "id3v2.h" #include "id3v2.h"
@ -2428,8 +2429,11 @@ int av_find_stream_info(AVFormatContext *ic)
(st->codec_info_nb_frames-2)*(int64_t)st->time_base.den, (st->codec_info_nb_frames-2)*(int64_t)st->time_base.den,
st->info->codec_info_duration*(int64_t)st->time_base.num, 60000); st->info->codec_info_duration*(int64_t)st->time_base.num, 60000);
if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO) { if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO) {
if(st->codec->codec_id == CODEC_ID_RAWVIDEO && !st->codec->codec_tag && !st->codec->bits_per_coded_sample) if(st->codec->codec_id == CODEC_ID_RAWVIDEO && !st->codec->codec_tag && !st->codec->bits_per_coded_sample){
st->codec->codec_tag= avcodec_pix_fmt_to_codec_tag(st->codec->pix_fmt); uint32_t tag= avcodec_pix_fmt_to_codec_tag(st->codec->pix_fmt);
if(ff_find_pix_fmt(ff_raw_pix_fmt_tags, tag) == st->codec->pix_fmt)
st->codec->codec_tag= tag;
}
// the check for tb_unreliable() is not completely correct, since this is not about handling // the check for tb_unreliable() is not completely correct, since this is not about handling
// a unreliable/inexact time base, but a time base that is finer than necessary, as e.g. // a unreliable/inexact time base, but a time base that is finer than necessary, as e.g.

Loading…
Cancel
Save