mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
Merge commit '9f30fb5a773d59298d8d45c741b3fd971d84c97b'
* commit '9f30fb5a773d59298d8d45c741b3fd971d84c97b': configure: Don't pass -mthumb or -march= to MSVC mpeg12: skip frames consistently Conflicts: libavcodec/mpeg12dec.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
200ef1e3c3
2
configure
vendored
2
configure
vendored
@ -2660,6 +2660,8 @@ msvc_flags(){
|
||||
-fno-common) ;;
|
||||
-fno-signed-zeros) ;;
|
||||
-fPIC) ;;
|
||||
-mthumb) ;;
|
||||
-march=*) ;;
|
||||
-lz) echo zlib.lib ;;
|
||||
-lavifil32) echo vfw32.lib ;;
|
||||
-lavicap32) echo vfw32.lib user32.lib ;;
|
||||
|
@ -2121,7 +2121,7 @@ static int decode_chunks(AVCodecContext *avctx,
|
||||
const uint8_t *buf_ptr = buf;
|
||||
const uint8_t *buf_end = buf + buf_size;
|
||||
int ret, input_size;
|
||||
int last_code = 0;
|
||||
int last_code = 0, skip_frame = 0;
|
||||
int picture_start_code_seen = 0;
|
||||
|
||||
for (;;) {
|
||||
@ -2129,7 +2129,7 @@ static int decode_chunks(AVCodecContext *avctx,
|
||||
uint32_t start_code = -1;
|
||||
buf_ptr = avpriv_find_start_code(buf_ptr, buf_end, &start_code);
|
||||
if (start_code > 0x1ff) {
|
||||
if (s2->pict_type != AV_PICTURE_TYPE_B || avctx->skip_frame <= AVDISCARD_DEFAULT) {
|
||||
if (!skip_frame) {
|
||||
if (HAVE_THREADS && (avctx->active_thread_type & FF_THREAD_SLICE)) {
|
||||
int i;
|
||||
av_assert0(avctx->thread_count > 1);
|
||||
@ -2316,20 +2316,27 @@ static int decode_chunks(AVCodecContext *avctx,
|
||||
if (s2->last_picture_ptr == NULL) {
|
||||
/* Skip B-frames if we do not have reference frames and gop is not closed */
|
||||
if (s2->pict_type == AV_PICTURE_TYPE_B) {
|
||||
if (!s2->closed_gop)
|
||||
if (!s2->closed_gop) {
|
||||
skip_frame = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (s2->pict_type == AV_PICTURE_TYPE_I || (s2->flags2 & CODEC_FLAG2_SHOW_ALL))
|
||||
s->sync=1;
|
||||
if (s2->next_picture_ptr == NULL) {
|
||||
/* Skip P-frames if we do not have a reference frame or we have an invalid header. */
|
||||
if (s2->pict_type == AV_PICTURE_TYPE_P && !s->sync) break;
|
||||
if (s2->pict_type == AV_PICTURE_TYPE_P && !s->sync) {
|
||||
skip_frame = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ((avctx->skip_frame >= AVDISCARD_NONREF && s2->pict_type == AV_PICTURE_TYPE_B) ||
|
||||
(avctx->skip_frame >= AVDISCARD_NONKEY && s2->pict_type != AV_PICTURE_TYPE_I) ||
|
||||
avctx->skip_frame >= AVDISCARD_ALL)
|
||||
avctx->skip_frame >= AVDISCARD_ALL) {
|
||||
skip_frame = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!s->mpeg_enc_ctx_allocated)
|
||||
break;
|
||||
@ -2347,6 +2354,7 @@ static int decode_chunks(AVCodecContext *avctx,
|
||||
}
|
||||
|
||||
if (s2->first_slice) {
|
||||
skip_frame = 0;
|
||||
s2->first_slice = 0;
|
||||
if (mpeg_field_start(s2, buf, buf_size) < 0)
|
||||
return -1;
|
||||
|
Loading…
Reference in New Issue
Block a user