summaryrefslogtreecommitdiffstats
path: root/demux/demux.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-07-05 16:59:44 +0200
committerwm4 <wm4@nowhere>2014-07-05 17:07:15 +0200
commit37085788e4d25b9eba65e850b80c8184b51b0ad3 (patch)
tree457e5aec0ef26f19b1c9b64faebfd7ede13c222a /demux/demux.c
parentde71b502495cf3c1ce778a141da574d715582f97 (diff)
downloadmpv-37085788e4d25b9eba65e850b80c8184b51b0ad3.tar.bz2
mpv-37085788e4d25b9eba65e850b80c8184b51b0ad3.tar.xz
demux: minor simplification to internal API
Also some other unrelated minor changes.
Diffstat (limited to 'demux/demux.c')
-rw-r--r--demux/demux.c30
1 files changed, 11 insertions, 19 deletions
diff --git a/demux/demux.c b/demux/demux.c
index 63b936b820..de896bdc14 100644
--- a/demux/demux.c
+++ b/demux/demux.c
@@ -80,6 +80,7 @@ const demuxer_desc_t *const demuxer_list[] = {
};
struct demux_stream {
+ struct demuxer *demuxer;
int selected; // user wants packets from this stream
int eof; // end of demuxed stream? (true if all buffer empty)
int packs; // number of packets in buffer
@@ -125,6 +126,7 @@ struct sh_stream *new_sh_stream(demuxer_t *demuxer, enum stream_type type)
.demuxer_id = demuxer_id, // may be overwritten by demuxer
.ds = talloc_zero(sh, struct demux_stream),
};
+ sh->ds->demuxer = demuxer;
MP_TARRAY_APPEND(demuxer, demuxer->streams, demuxer->num_streams, sh);
switch (sh->type) {
case STREAM_VIDEO: sh->video = talloc_zero(demuxer, struct sh_video); break;
@@ -174,14 +176,14 @@ static int count_bytes(struct demuxer *demux, enum stream_type type)
}
// Returns the same value as demuxer->fill_buffer: 1 ok, 0 EOF/not selected.
-int demuxer_add_packet(demuxer_t *demuxer, struct sh_stream *stream,
- demux_packet_t *dp)
+int demux_add_packet(struct sh_stream *stream, demux_packet_t *dp)
{
struct demux_stream *ds = stream ? stream->ds : NULL;
if (!dp || !ds || !ds->selected) {
talloc_free(dp);
return 0;
}
+ struct demuxer *demuxer = ds->demuxer;
dp->stream = stream->index;
dp->next = NULL;
@@ -196,12 +198,7 @@ int demuxer_add_packet(demuxer_t *demuxer, struct sh_stream *stream,
// first packet in stream
ds->head = ds->tail = dp;
}
- /* ds_get_packets() can set ds->eof to 1 when another stream runs out of
- * buffer space. That makes sense because in that situation the calling
- * code should not count on being able to demux more packets from this
- * stream. (Can happen with e.g. badly interleaved files.)
- * In this case, we didn't necessarily reach EOF, and new packet can
- * appear. */
+ // obviously not true anymore
ds->eof = 0;
// For video, PTS determination is not trivial, but for other media types
@@ -209,10 +206,12 @@ int demuxer_add_packet(demuxer_t *demuxer, struct sh_stream *stream,
if (stream->type != STREAM_VIDEO && dp->pts == MP_NOPTS_VALUE)
dp->pts = dp->dts;
- MP_DBG(demuxer, "DEMUX: Append packet to %s, len=%d pts=%5.3f pos=%"PRIi64" "
- "[packs: A=%d V=%d S=%d]\n", stream_type_name(stream->type),
- dp->len, dp->pts, dp->pos, count_packs(demuxer, STREAM_AUDIO),
- count_packs(demuxer, STREAM_VIDEO), count_packs(demuxer, STREAM_SUB));
+ if (mp_msg_test(demuxer->log, MSGL_DEBUG)) {
+ MP_DBG(demuxer, "DEMUX: Append packet to %s, len=%d pts=%5.3f pos="
+ "%"PRIi64" [A=%d V=%d S=%d]\n", stream_type_name(stream->type),
+ dp->len, dp->pts, dp->pos, count_packs(demuxer, STREAM_AUDIO),
+ count_packs(demuxer, STREAM_VIDEO), count_packs(demuxer, STREAM_SUB));
+ }
return 1;
}
@@ -318,13 +317,6 @@ bool demux_has_packet(struct sh_stream *sh)
return sh && sh->ds->head;
}
-// Same as demux_has_packet, but to be called internally by demuxers, as
-// opposed to the user of the demuxer.
-bool demuxer_stream_has_packets_queued(struct demuxer *d, struct sh_stream *stream)
-{
- return demux_has_packet(stream);
-}
-
// Return whether EOF was returned with an earlier packet read.
bool demux_stream_eof(struct sh_stream *sh)
{