Merge remote-tracking branch 'qatar/release/0.8' into release/0.10
* qatar/release/0.8: (154 commits) Update Changelog for the 0.8.1 Release dca: include libavutil/mathematics.h for possibly missing M_SQRT1_2 dca: don't use av_clip_uintp2(). snow: check reference frame indices. snow: reject unsupported chroma shifts. xa_adpcm: limit filter to prevent xa_adpcm_table[] array bounds overruns. h264: increase reference poc list from 16 to 32. h264: stricter reference limit enforcement. h264: improve parsing of broken AVC SPS Replace computations of remaining bits with calls to get_bits_left(). png: convert to bytestream2 API. roqvideo: convert to bytestream2 API. smc: port to bytestream2 API. tgq: convert to bytestream2 API. algmm: convert to bytestream2 API. jvdec: unbreak video decoding h264: Fix invalid interlaced/progressive MB combinations for direct mode prediction. libx264: add 'stats' private option for setting 2pass stats filename. libx264: fix help text for slice-max-size option. avconv: reindent ... Conflicts: Changelog RELEASE avconv.c doc/APIchanges ffplay.c libavcodec/Makefile libavcodec/aacdec.c libavcodec/alsdec.c libavcodec/atrac3.c libavcodec/avcodec.h libavcodec/dvdata.c libavcodec/fraps.c libavcodec/golomb.h libavcodec/h264.c libavcodec/h264.h libavcodec/h264_cabac.c libavcodec/h264_cavlc.c libavcodec/h264_direct.c libavcodec/h264_parser.c libavcodec/h264_ps.c libavcodec/h264idct_template.c libavcodec/indeo3.c libavcodec/kgv1dec.c libavcodec/kmvc.c libavcodec/mjpegbdec.c libavcodec/mmvideo.c libavcodec/mpegaudiodec.c libavcodec/mpegvideo.h libavcodec/options.c libavcodec/pngdec.c libavcodec/roqvideodec.c libavcodec/shorten.c libavcodec/svq3.c libavcodec/utils.c libavcodec/version.h libavcodec/wmadec.c libavcodec/xxan.c libavformat/Makefile libavformat/asfdec.c libavformat/dv.c libavformat/mov.c libavformat/nsvdec.c libavformat/utils.c libavformat/version.h libavutil/avutil.h libavutil/error.c libavutil/error.h libswscale/swscale.c libswscale/utils.c libswscale/x86/swscale_template.c tests/ref/acodec/g722 Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
@@ -2236,6 +2236,7 @@ static int has_decode_delay_been_guessed(AVStream *st)
|
||||
st->info->nb_decoded_frames >= 6;
|
||||
}
|
||||
|
||||
/* returns 1 or 0 if or if not decoded data was returned, or a negative error */
|
||||
static int try_decode_frame(AVStream *st, AVPacket *avpkt, AVDictionary **options)
|
||||
{
|
||||
AVCodec *codec;
|
||||
@@ -2243,10 +2244,12 @@ static int try_decode_frame(AVStream *st, AVPacket *avpkt, AVDictionary **option
|
||||
AVFrame picture;
|
||||
AVPacket pkt = *avpkt;
|
||||
|
||||
if(!st->codec->codec){
|
||||
if (!avcodec_is_open(st->codec)) {
|
||||
AVDictionary *thread_opt = NULL;
|
||||
|
||||
codec = avcodec_find_decoder(st->codec->codec_id);
|
||||
codec = st->codec->codec ? st->codec->codec :
|
||||
avcodec_find_decoder(st->codec->codec_id);
|
||||
|
||||
if (!codec)
|
||||
return -1;
|
||||
|
||||
@@ -2283,6 +2286,7 @@ static int try_decode_frame(AVStream *st, AVPacket *avpkt, AVDictionary **option
|
||||
st->info->nb_decoded_frames++;
|
||||
pkt.data += ret;
|
||||
pkt.size -= ret;
|
||||
ret = got_picture;
|
||||
}
|
||||
}
|
||||
if(!pkt.data && !got_picture)
|
||||
@@ -2415,8 +2419,8 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
|
||||
st->parser->flags |= PARSER_FLAG_COMPLETE_FRAMES;
|
||||
}
|
||||
}
|
||||
assert(!st->codec->codec);
|
||||
codec = avcodec_find_decoder(st->codec->codec_id);
|
||||
codec = st->codec->codec ? st->codec->codec :
|
||||
avcodec_find_decoder(st->codec->codec_id);
|
||||
|
||||
/* force thread count to 1 since the h264 decoder will not extract SPS
|
||||
* and PPS to extradata during multi-threaded decoding */
|
||||
@@ -2589,12 +2593,16 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
|
||||
st = ic->streams[i];
|
||||
|
||||
/* flush the decoders */
|
||||
while ((err = try_decode_frame(st, &empty_pkt,
|
||||
do {
|
||||
err = try_decode_frame(st, &empty_pkt,
|
||||
(options && i < orig_nb_streams) ?
|
||||
&options[i] : NULL)) >= 0)
|
||||
if (has_codec_parameters(st->codec))
|
||||
break;
|
||||
&options[i] : NULL);
|
||||
} while (err > 0 && !has_codec_parameters(st->codec));
|
||||
|
||||
if (err < 0) {
|
||||
av_log(ic, AV_LOG_WARNING,
|
||||
"decoding for stream %d failed\n", st->index);
|
||||
}
|
||||
if (!has_codec_parameters(st->codec)){
|
||||
char buf[256];
|
||||
avcodec_string(buf, sizeof(buf), st->codec, 0);
|
||||
@@ -2608,8 +2616,7 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
|
||||
// close codecs which were opened in try_decode_frame()
|
||||
for(i=0;i<ic->nb_streams;i++) {
|
||||
st = ic->streams[i];
|
||||
if(st->codec->codec)
|
||||
avcodec_close(st->codec);
|
||||
avcodec_close(st->codec);
|
||||
}
|
||||
for(i=0;i<ic->nb_streams;i++) {
|
||||
st = ic->streams[i];
|
||||
@@ -4393,3 +4400,12 @@ int ff_add_param_change(AVPacket *pkt, int32_t channels,
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
const struct AVCodecTag *avformat_get_riff_video_tags(void)
|
||||
{
|
||||
return ff_codec_bmp_tags;
|
||||
}
|
||||
const struct AVCodecTag *avformat_get_riff_audio_tags(void)
|
||||
{
|
||||
return ff_codec_wav_tags;
|
||||
}
|
||||
|
Reference in New Issue
Block a user