Browse Source

demux: mkv: use the coded_frame_size for RA288 block alignment

As done in libavformat.
pull/188/head
Steve Lhomme 10 months ago
parent
commit
216e30ef43
  1. 2
      modules/demux/mkv/matroska_segment_parse.cpp
  2. 2
      modules/demux/mkv/util.cpp
  3. 1
      modules/demux/mkv/util.hpp

2
modules/demux/mkv/matroska_segment_parse.cpp

@ -2157,6 +2157,8 @@ bool matroska_segment_c::TrackInit( mkv_track_t * p_tk )
if (i_codec == VLC_CODEC_COOK || i_codec == VLC_CODEC_ATRAC3)
p_tk->fmt.audio.i_blockalign = p_realaudio->i_subpacket_size;
else // VLC_CODEC_RA_288
p_tk->fmt.audio.i_blockalign = p_realaudio->coded_frame_size;
p_tk->fmt.audio.i_rate = p_realaudio->i_rate;
p_tk->fmt.audio.i_bitspersample = p_realaudio->i_bitspersample;

2
modules/demux/mkv/util.cpp

@ -438,7 +438,7 @@ int32_t Cook_PrivateTrackData::Init()
bytes.skip(12); // unknown2
bytes.skip(2); // unknown3
bytes.skip(2); // flavor
bytes.skip(4); // coded_frame_size
coded_frame_size = bytes.GetBE32(); // coded_frame_size
bytes.skip(3*4); // unknown4
i_sub_packet_h = bytes.GetBE16(); // sub_packet_h
i_frame_size = bytes.GetBE16(); // frame_size

1
modules/demux/mkv/util.hpp

@ -100,6 +100,7 @@ public:
~Cook_PrivateTrackData();
int32_t Init();
uint32_t coded_frame_size;
uint16_t i_sub_packet_h;
uint16_t i_frame_size;
uint16_t i_subpacket_size;

Loading…
Cancel
Save