Exemplo n.º 1
0
//cwm at libavformat/utils.c:682
int ff_raw_read_partial_packet(AVFormatContext *s, AVPacket *pkt)
{
    int ret, size;

    size = RAW_PACKET_SIZE;//cwm 1024

    if (av_new_packet(pkt, size) < 0)
        return AVERROR(ENOMEM);

    pkt->pos= avio_tell(s->pb);//得到当前文件的写位置
    pkt->stream_index = 0;
    ret = ffio_read_partial(s->pb, pkt->data, size);//cwm 读文件的数据到pkt->data
    if (ret < 0) {
        av_packet_unref(pkt);
        return ret;
    }
    av_shrink_packet(pkt, ret);//cwm pkt->size=size,且把未使用的buffer清0
    return ret;
}
Exemplo n.º 2
0
int ff_raw_read_partial_packet(AVFormatContext *s, AVPacket *pkt)
{
    int ret, size;

    size = RAW_PACKET_SIZE;

    if (av_new_packet(pkt, size) < 0)
        return AVERROR(ENOMEM);

    pkt->pos= avio_tell(s->pb);
    pkt->stream_index = 0;
    ret = ffio_read_partial(s->pb, pkt->data, size);
    if (ret < 0) {
        av_free_packet(pkt);
        return ret;
    }
    av_shrink_packet(pkt, ret);
    return ret;
}
Exemplo n.º 3
0
Arquivo: rawdec.c Projeto: ares89/vlc
int ff_raw_read_partial_packet(AVFormatContext *s, AVPacket *pkt)
{
    int ret, size;

    size = RAW_PACKET_SIZE;

    if (av_new_packet(pkt, size) < 0)
        return AVERROR(ENOMEM);

    pkt->pos= avio_tell(s->pb);
    pkt->stream_index = 0;
    ret = ffio_read_partial(s->pb, pkt->data, size);
    if (ret < 0) {
        av_free_packet(pkt);
        return ret;
    } else if (ret < size) {
        /* initialize end of packet for partial reads to avoid reading
         * uninitialized data on allowed overreads */
        memset(pkt->data + ret, 0, FF_INPUT_BUFFER_PADDING_SIZE);
    }
    pkt->size = ret;
    return ret;
}