Unified · Split
| @@ -2756,9 +2756,13 @@ static void mkv_parse_and_add_packet(demuxer_t *demuxer, mkv_track_t *track, · 2755 unmodified lines | |||
| 2756 | if (track->parse && !track->av_parser) { | 2756 | if (track->parse && !track->av_parser) { |
| 2757 | int id = mp_codec_to_av_codec_id(track->stream->codec->codec); | 2757 | int id = mp_codec_to_av_codec_id(track->stream->codec->codec); |
| 2758 | const AVCodec *codec = avcodec_find_decoder(id); | 2758 | const AVCodec *codec = avcodec_find_decoder(id); |
| 2759 | track->av_parser = av_parser_init(id); | 2759 | assert(!track->av_parser_codec); |
| 2760 | if (codec) | 2760 | if (codec) |
| 2761 | track->av_parser_codec = avcodec_alloc_context3(codec); | 2761 | track->av_parser_codec = avcodec_alloc_context3(codec); |
| 2762 | if (track->av_parser_codec) | ||
| 2763 | track->av_parser = av_parser_init(id); | ||
| 2764 | if (!track->av_parser) | ||
| 2765 | avcodec_free_context(&track->av_parser_codec); | ||
| 2762 | } | 2766 | } |
| 2763 | 2767 | ||
| 2764 | if (!track->parse || !track->av_parser || !track->av_parser_codec) { | 2768 | if (!track->parse || !track->av_parser || !track->av_parser_codec) { |