mirror of https://git.ffmpeg.org/ffmpeg.git
avformat/av1dec: inline obu_read_data() and obu_prefetch() into obu_get_packet()
They don't really help making the demuxer more readable. Reviewed-by: Guangxin Xu <oddstone@gmail.com> Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
parent
0de01da1d2
commit
a72d5290c5
|
@ -382,60 +382,46 @@ static int obu_read_header(AVFormatContext *s)
|
||||||
return read_header(s, &c->framerate, &c->bsf, c);
|
return read_header(s, &c->framerate, &c->bsf, c);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int obu_prefetch(AVFormatContext *s, uint8_t* dest)
|
static int obu_get_packet(AVFormatContext *s, AVPacket *pkt)
|
||||||
{
|
{
|
||||||
ObuContext *c = s->priv_data;
|
ObuContext *c = s->priv_data;
|
||||||
|
uint8_t header[MAX_OBU_HEADER_SIZE];
|
||||||
|
int64_t obu_size;
|
||||||
int size = av_fifo_space(c->fifo);
|
int size = av_fifo_space(c->fifo);
|
||||||
|
int ret, len, type;
|
||||||
|
|
||||||
av_fifo_generic_write(c->fifo, s->pb, size,
|
av_fifo_generic_write(c->fifo, s->pb, size,
|
||||||
(int (*)(void*, void*, int))avio_read);
|
(int (*)(void*, void*, int))avio_read);
|
||||||
size = av_fifo_size(c->fifo);
|
size = av_fifo_size(c->fifo);
|
||||||
if (size > 0) {
|
if (!size)
|
||||||
av_fifo_generic_peek(c->fifo, dest, size, NULL);
|
return 0;
|
||||||
}
|
|
||||||
return size;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int obu_read_data(AVFormatContext *s, AVPacket *pkt, int len)
|
av_fifo_generic_peek(c->fifo, header, size, NULL);
|
||||||
{
|
|
||||||
int size, left;
|
len = read_obu_with_size(header, size, &obu_size, &type);
|
||||||
ObuContext *c = s->priv_data;
|
if (len < 0) {
|
||||||
int ret = av_new_packet(pkt, len);
|
av_log(c, AV_LOG_ERROR, "Failed to read obu\n");
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = av_new_packet(pkt, len);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
av_log(c, AV_LOG_ERROR, "Failed to allocate packet for obu\n");
|
av_log(c, AV_LOG_ERROR, "Failed to allocate packet for obu\n");
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
size = FFMIN(av_fifo_size(c->fifo), len);
|
size = FFMIN(size, len);
|
||||||
av_fifo_generic_read(c->fifo, pkt->data, size, NULL);
|
av_fifo_generic_read(c->fifo, pkt->data, size, NULL);
|
||||||
left = len - size;
|
len -= size;
|
||||||
if (left > 0) {
|
if (len > 0) {
|
||||||
ret = avio_read(s->pb, pkt->data + size, left);
|
ret = avio_read(s->pb, pkt->data + size, len);
|
||||||
if (ret != left) {
|
if (ret != len) {
|
||||||
av_log(c, AV_LOG_ERROR, "Failed to read %d frome file\n", left);
|
av_log(c, AV_LOG_ERROR, "Failed to read %d frome file\n", len);
|
||||||
return ret < 0 ? ret : AVERROR_INVALIDDATA;
|
return ret < 0 ? ret : AVERROR_INVALIDDATA;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int obu_get_packet(AVFormatContext *s, AVPacket *pkt)
|
|
||||||
{
|
|
||||||
ObuContext *c = s->priv_data;
|
|
||||||
int64_t obu_size;
|
|
||||||
int ret, type;
|
|
||||||
uint8_t header[MAX_OBU_HEADER_SIZE];
|
|
||||||
|
|
||||||
ret = obu_prefetch(s, header);
|
|
||||||
if (!ret)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
ret = read_obu_with_size(header, ret, &obu_size, &type);
|
|
||||||
if (ret < 0) {
|
|
||||||
av_log(c, AV_LOG_ERROR, "Failed to read obu\n");
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
return obu_read_data(s, pkt, ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int obu_read_packet(AVFormatContext *s, AVPacket *pkt)
|
static int obu_read_packet(AVFormatContext *s, AVPacket *pkt)
|
||||||
{
|
{
|
||||||
ObuContext *c = s->priv_data;
|
ObuContext *c = s->priv_data;
|
||||||
|
|
Loading…
Reference in New Issue