summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2020-02-12 19:10:03 +0100
committerwm4 <wm4@nowhere>2020-02-12 19:10:03 +0100
commit469a124c71bcc3e47ee6362796bd9a506a98f235 (patch)
treeffa4f35d00b75d21801ba368ccd2ff59d4e3c429
parentc3f93f5fdd33ada85e700bf8bad7d70f6739eed4 (diff)
downloadmpv-stream_debug_stuff.tar.bz2
mpv-stream_debug_stuff.tar.xz
-rw-r--r--demux/demux_mkv.c20
-rw-r--r--stream/stream_file.c2
2 files changed, 20 insertions, 2 deletions
diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c
index 99e481bc7d..9e9b92e99e 100644
--- a/demux/demux_mkv.c
+++ b/demux/demux_mkv.c
@@ -2466,12 +2466,15 @@ static void mkv_parse_and_add_packet(demuxer_t *demuxer, mkv_track_t *track,
int64_t dts = dp->dts == MP_NOPTS_VALUE ? AV_NOPTS_VALUE : dp->dts * tb;
bool copy_sidedata = true;
+ MP_STATS(demuxer, "start parse");
while (dp->len) {
uint8_t *data = NULL;
int size = 0;
+ MP_STATS(demuxer, "start avparse");
int len = av_parser_parse2(track->av_parser, track->av_parser_codec,
&data, &size, dp->buffer, dp->len,
pts, dts, 0);
+ MP_STATS(demuxer, "end avparse");
if (len < 0 || len > dp->len)
break;
dp->buffer += len;
@@ -2495,6 +2498,7 @@ static void mkv_parse_and_add_packet(demuxer_t *demuxer, mkv_track_t *track,
}
pts = dts = AV_NOPTS_VALUE;
}
+ MP_STATS(demuxer, "end parse");
if (dp->len) {
add_packet(demuxer, stream, dp);
@@ -2639,6 +2643,8 @@ static int handle_block(demuxer_t *demuxer, struct block_info *block_info)
}
if (use_this_block) {
+ MP_STATS(demuxer, "start block");
+
uint64_t filepos = block_info->filepos;
for (int i = 0; i < block_info->num_laces; i++) {
@@ -2699,6 +2705,8 @@ static int handle_block(demuxer_t *demuxer, struct block_info *block_info)
mkv_d->a_skip_to_keyframe = 0;
}
+ MP_STATS(demuxer, "end block");
+
return 1;
}
@@ -2778,6 +2786,8 @@ static int read_next_block_into_queue(demuxer_t *demuxer)
stream_t *s = demuxer->stream;
struct block_info block = {0};
+ MP_STATS(s, "start rblock");
+
while (1) {
while (stream_tell(s) < mkv_d->cluster_end) {
int64_t start_filepos = stream_tell(s);
@@ -2834,13 +2844,18 @@ static int read_next_block_into_queue(demuxer_t *demuxer)
uint32_t id = ebml_read_id(s);
if (id == MATROSKA_ID_CLUSTER)
break;
- if (s->eof)
+ if (s->eof) {
+ MP_STATS(s, "end rblock");
return -1;
- if (demux_cancel_test(demuxer))
+ }
+ if (demux_cancel_test(demuxer)) {
+ MP_STATS(s, "end rblock");
return -1;
+ }
if (id == EBML_ID_EBML && stream_tell(s) >= mkv_d->segment_end) {
// Appended segment - don't use its clusters, consider this EOF.
stream_seek(s, stream_tell(s) - 4);
+ MP_STATS(s, "end rblock");
return -1;
}
// For the sake of robustness, consider even unknown level 1
@@ -2861,6 +2876,7 @@ static int read_next_block_into_queue(demuxer_t *demuxer)
assert(0); // unreachable
add_block:
+ MP_STATS(s, "end rblock");
index_block(demuxer, &block);
MP_TARRAY_APPEND(mkv_d, mkv_d->blocks, mkv_d->num_blocks, block);
return 1;
diff --git a/stream/stream_file.c b/stream/stream_file.c
index a79ef0e913..04e74c6b00 100644
--- a/stream/stream_file.c
+++ b/stream/stream_file.c
@@ -98,7 +98,9 @@ static int fill_buffer(stream_t *s, void *buffer, int max_len)
#endif
for (int retries = 0; retries < MAX_RETRIES; retries++) {
+ MP_STATS(s, "start read");
int r = read(p->fd, buffer, max_len);
+ MP_STATS(s, "end read");
if (r > 0)
return r;