Unified · Split
| @@ -2756,9 +2756,13 @@ static void mkv_parse_and_add_packet(demuxer_t *demuxer, mkv_track_t *track, · 2755 unmodified lines | ||
| 2756 | 2756 | if (track->parse && !track->av_parser) { |
| 2757 | 2757 | int id = mp_codec_to_av_codec_id(track->stream->codec->codec); |
| 2758 | 2758 | const AVCodec *codec = avcodec_find_decoder(id); |
| 2759 | − track->av_parser = av_parser_init(id); | |
| 2759 | + assert(!track->av_parser_codec); | |
| 2760 | 2760 | if (codec) |
| 2761 | 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 | 2768 | if (!track->parse || !track->av_parser || !track->av_parser_codec) { |