summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavformat/rdt.c1
-rw-r--r--libavformat/rm.h4
-rw-r--r--libavformat/rmdec.c4
3 files changed, 7 insertions, 2 deletions
diff --git a/libavformat/rdt.c b/libavformat/rdt.c
index 4bcb967ae0..10add82c9c 100644
--- a/libavformat/rdt.c
+++ b/libavformat/rdt.c
@@ -315,6 +315,7 @@ rdt_parse_packet (PayloadContext *rdt, AVStream *st,
NULL, NULL, NULL, NULL);
}
} else {
+ rdt->audio_pkt_cnt =
ff_rm_retrieve_cache (rdt->rmctx, rdt->rmctx->pb, st, rdt->rmst[0], pkt);
if (rdt->audio_pkt_cnt == 0 &&
st->codec->codec_id == CODEC_ID_AAC)
diff --git a/libavformat/rm.h b/libavformat/rm.h
index f9fdd76758..4e2a5b7604 100644
--- a/libavformat/rm.h
+++ b/libavformat/rm.h
@@ -83,8 +83,10 @@ int ff_rm_parse_packet (AVFormatContext *s, ByteIOContext *pb,
* @param st stream that this packet belongs to
* @param rst Real-specific stream information
* @param pkt location to store the packet data
+ * @returns the number of samples left for subsequent calls to this same
+ * function, or 0 if all samples have been retrieved.
*/
-void ff_rm_retrieve_cache (AVFormatContext *s, ByteIOContext *pb,
+int ff_rm_retrieve_cache (AVFormatContext *s, ByteIOContext *pb,
AVStream *st, RMStream *rst, AVPacket *pkt);
#endif /* AVFORMAT_RM_H */
diff --git a/libavformat/rmdec.c b/libavformat/rmdec.c
index 39af3d1a28..e8ecc927d1 100644
--- a/libavformat/rmdec.c
+++ b/libavformat/rmdec.c
@@ -681,7 +681,7 @@ ff_rm_parse_packet (AVFormatContext *s, ByteIOContext *pb,
return st->codec->codec_type == CODEC_TYPE_AUDIO ? rm->audio_pkt_cnt : 0;
}
-void
+int
ff_rm_retrieve_cache (AVFormatContext *s, ByteIOContext *pb,
AVStream *st, RMStream *ast, AVPacket *pkt)
{
@@ -700,6 +700,8 @@ ff_rm_retrieve_cache (AVFormatContext *s, ByteIOContext *pb,
rm->audio_pkt_cnt--;
pkt->flags = 0;
pkt->stream_index = st->index;
+
+ return rm->audio_pkt_cnt;
}
static int rm_read_packet(AVFormatContext *s, AVPacket *pkt)