summaryrefslogtreecommitdiffstats
path: root/demux/demux_mkv.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-04-14 23:19:29 +0200
committerwm4 <wm4@nowhere>2013-04-20 23:28:25 +0200
commit23da9e68e81ca058e537bcf975b64b20eea595fc (patch)
tree4b98a4cf6523b877123c1bc6951e60bb462b5d5e /demux/demux_mkv.c
parenteb27e1462282af0c7a04b8c1cec2d6eded3dd968 (diff)
downloadmpv-23da9e68e81ca058e537bcf975b64b20eea595fc.tar.bz2
mpv-23da9e68e81ca058e537bcf975b64b20eea595fc.tar.xz
demux_mkv: introduce new_demux_packet_from() and use it
Diffstat (limited to 'demux/demux_mkv.c')
-rw-r--r--demux/demux_mkv.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c
index 71e029c2bf..03789631dc 100644
--- a/demux/demux_mkv.c
+++ b/demux/demux_mkv.c
@@ -1891,8 +1891,7 @@ static void handle_realvideo(demuxer_t *demuxer, mkv_track_t *track,
demux_packet_t *dp;
uint32_t timestamp = mkv_d->last_pts * 1000;
- dp = new_demux_packet(data.len);
- memcpy(dp->buffer, data.start, data.len);
+ dp = new_demux_packet_from(data.start, data.len);
if (mkv_d->v_skip_to_keyframe) {
dp->pts = mkv_d->last_pts;
@@ -1991,9 +1990,8 @@ static void handle_realaudio(demuxer_t *demuxer, mkv_track_t *track,
track->sub_packet_cnt = 0;
// Release all the audio packets
for (x = 0; x < sph * w / apk_usize; x++) {
- dp = new_demux_packet(apk_usize);
- memcpy(dp->buffer, track->audio_buf + x * apk_usize,
- apk_usize);
+ dp = new_demux_packet_from(track->audio_buf + x * apk_usize,
+ apk_usize);
/* Put timestamp only on packets that correspond to original
* audio packets in file */
dp->pts = (x * apk_usize % w) ? 0 :
@@ -2004,8 +2002,7 @@ static void handle_realaudio(demuxer_t *demuxer, mkv_track_t *track,
}
}
} else { // Not a codec that require reordering
- dp = new_demux_packet(size);
- memcpy(dp->buffer, buffer, size);
+ dp = new_demux_packet_from(buffer, size);
if (track->ra_pts == mkv_d->last_pts && !mkv_d->a_skip_to_keyframe)
dp->pts = 0;
else
@@ -2165,8 +2162,8 @@ static int handle_block(demuxer_t *demuxer, struct block_info *block_info)
else {
bstr buffer = demux_mkv_decode(track, block, 1);
if (buffer.start) {
- demux_packet_t *dp = new_demux_packet(buffer.len);
- memcpy(dp->buffer, buffer.start, buffer.len);
+ demux_packet_t *dp =
+ new_demux_packet_from(buffer.start, buffer.len);
if (buffer.start != block.start)
talloc_free(buffer.start);
dp->keyframe = keyframe;