|
|
@ -158,17 +158,15 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code |
|
|
|
codec = avctx->codec; |
|
|
|
codec = avctx->codec; |
|
|
|
codec2 = ffcodec(codec); |
|
|
|
codec2 = ffcodec(codec); |
|
|
|
|
|
|
|
|
|
|
|
if ((avctx->codec_type == AVMEDIA_TYPE_UNKNOWN || avctx->codec_type == codec->type) && |
|
|
|
if ((avctx->codec_type != AVMEDIA_TYPE_UNKNOWN && avctx->codec_type != codec->type) || |
|
|
|
avctx->codec_id == AV_CODEC_ID_NONE) { |
|
|
|
(avctx->codec_id != AV_CODEC_ID_NONE && avctx->codec_id != codec->id)) { |
|
|
|
avctx->codec_type = codec->type; |
|
|
|
|
|
|
|
avctx->codec_id = codec->id; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (avctx->codec_id != codec->id || (avctx->codec_type != codec->type && |
|
|
|
|
|
|
|
avctx->codec_type != AVMEDIA_TYPE_ATTACHMENT)) { |
|
|
|
|
|
|
|
av_log(avctx, AV_LOG_ERROR, "Codec type or id mismatches\n"); |
|
|
|
av_log(avctx, AV_LOG_ERROR, "Codec type or id mismatches\n"); |
|
|
|
return AVERROR(EINVAL); |
|
|
|
return AVERROR(EINVAL); |
|
|
|
} |
|
|
|
} |
|
|
|
avctx->codec = codec; |
|
|
|
|
|
|
|
|
|
|
|
avctx->codec_type = codec->type; |
|
|
|
|
|
|
|
avctx->codec_id = codec->id; |
|
|
|
|
|
|
|
avctx->codec = codec; |
|
|
|
|
|
|
|
|
|
|
|
if (avctx->extradata_size < 0 || avctx->extradata_size >= FF_MAX_EXTRADATA_SIZE) |
|
|
|
if (avctx->extradata_size < 0 || avctx->extradata_size >= FF_MAX_EXTRADATA_SIZE) |
|
|
|
return AVERROR(EINVAL); |
|
|
|
return AVERROR(EINVAL); |
|
|
|