mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-05-17 23:17:41 +08:00
libavformat/oggdec.{c, h}: Implement packet skip on packet return value of 1
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:

committed by
Michael Niedermayer

parent
6d54af6599
commit
a9d39d6eb9
@ -605,20 +605,26 @@ static int ogg_packet(AVFormatContext *s, int *sid, int *dstart, int *dsize,
|
||||
} else {
|
||||
os->pflags = 0;
|
||||
os->pduration = 0;
|
||||
|
||||
ret = 0;
|
||||
if (os->codec && os->codec->packet) {
|
||||
if ((ret = os->codec->packet(s, idx)) < 0) {
|
||||
av_log(s, AV_LOG_ERROR, "Packet processing failed: %s\n", av_err2str(ret));
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
if (sid)
|
||||
*sid = idx;
|
||||
if (dstart)
|
||||
*dstart = os->pstart;
|
||||
if (dsize)
|
||||
*dsize = os->psize;
|
||||
if (fpos)
|
||||
*fpos = os->sync_pos;
|
||||
|
||||
if (!ret) {
|
||||
if (sid)
|
||||
*sid = idx;
|
||||
if (dstart)
|
||||
*dstart = os->pstart;
|
||||
if (dsize)
|
||||
*dsize = os->psize;
|
||||
if (fpos)
|
||||
*fpos = os->sync_pos;
|
||||
}
|
||||
|
||||
os->pstart += os->psize;
|
||||
os->psize = 0;
|
||||
if(os->pstart == os->bufpos)
|
||||
|
@ -43,6 +43,7 @@ struct ogg_codec {
|
||||
* @return < 0 (AVERROR) code or -1 on error
|
||||
* == 0 if the packet was a regular data packet.
|
||||
* == 0 or 1 if the packet was a header from a chained bitstream.
|
||||
* (1 will cause the packet to be skiped in calling code (ogg_packet())
|
||||
*/
|
||||
int (*packet)(AVFormatContext *, int);
|
||||
/**
|
||||
|
Reference in New Issue
Block a user