static int read_packet(AVFormatContext *s1, AVPacket *pkt)

{

    VideoDemuxData *s = s1->priv_data;

    char filename[1024];

    int i;

    int size[3]={0}, ret[3]={0};

    AVIOContext *f[3];

    AVCodecContext *codec= s1->streams[0]->codec;



    if (!s->is_pipe) {

        /* loop over input */

        if (s->loop && s->img_number > s->img_last) {

            s->img_number = s->img_first;

        }

        if (s->img_number > s->img_last)

            return AVERROR_EOF;

        if (av_get_frame_filename(filename, sizeof(filename),

                                  s->path, s->img_number)<0 && s->img_number > 1)

            return AVERROR(EIO);

        for(i=0; i<3; i++){

            if (avio_open2(&f[i], filename, AVIO_FLAG_READ,

                           &s1->interrupt_callback, NULL) < 0) {

                if(i==1)

                    break;

                av_log(s1, AV_LOG_ERROR, "Could not open file : %s\n",filename);

                return AVERROR(EIO);

            }

            size[i]= avio_size(f[i]);



            if(codec->codec_id != AV_CODEC_ID_RAWVIDEO)

                break;

            filename[ strlen(filename) - 1 ]= 'U' + i;

        }



        if(codec->codec_id == AV_CODEC_ID_RAWVIDEO && !codec->width)

            infer_size(&codec->width, &codec->height, size[0]);

    } else {

        f[0] = s1->pb;

        if (f[0]->eof_reached)

            return AVERROR(EIO);

        size[0]= 4096;

    }



    av_new_packet(pkt, size[0] + size[1] + size[2]);

    pkt->stream_index = 0;

    pkt->flags |= AV_PKT_FLAG_KEY;



    pkt->size= 0;

    for(i=0; i<3; i++){

        if(size[i]){

            ret[i]= avio_read(f[i], pkt->data + pkt->size, size[i]);

            if (!s->is_pipe)

                avio_close(f[i]);

            if(ret[i]>0)

                pkt->size += ret[i];

        }

    }



    if (ret[0] <= 0 || ret[1]<0 || ret[2]<0) {

        av_free_packet(pkt);

        return AVERROR(EIO); /* signal EOF */

    } else {

        s->img_count++;

        s->img_number++;

        return 0;

    }

}

static int read_packet(AVFormatContext *s1, AVPacket *pkt)

{

    VideoDemuxData *s = s1->priv_data;

    char filename[1024];

    int i;

    int size[3]={0}, ret[3]={0};

    AVIOContext *f[3];

    AVCodecContext *codec= s1->streams[0]->codec;



    if (!s->is_pipe) {

        

        if (s->loop && s->img_number > s->img_last) {

            s->img_number = s->img_first;

        }

        if (s->img_number > s->img_last)

            return AVERROR_EOF;

        if (av_get_frame_filename(filename, sizeof(filename),

                                  s->path, s->img_number)<0 && s->img_number > 1)

            return AVERROR(EIO);

        for(i=0; i<3; i++){

            if (avio_open2(&f[i], filename, AVIO_FLAG_READ,

                           &s1->interrupt_callback, NULL) < 0) {

                if(i==1)

                    break;

                av_log(s1, AV_LOG_ERROR, "Could not open file : %s\n",filename);

                return AVERROR(EIO);

            }

            size[i]= avio_size(f[i]);



            if(codec->codec_id != AV_CODEC_ID_RAWVIDEO)

                break;

            filename[ strlen(filename) - 1 ]= 'U' + i;

        }



        if(codec->codec_id == AV_CODEC_ID_RAWVIDEO && !codec->width)

            infer_size(&codec->width, &codec->height, size[0]);

    } else {

        f[0] = s1->pb;

        if (f[0]->eof_reached)

            return AVERROR(EIO);

        size[0]= 4096;

    }



    av_new_packet(pkt, size[0] + size[1] + size[2]);

    pkt->stream_index = 0;

    pkt->flags |= AV_PKT_FLAG_KEY;



    pkt->size= 0;

    for(i=0; i<3; i++){

        if(size[i]){

            ret[i]= avio_read(f[i], pkt->data + pkt->size, size[i]);

            if (!s->is_pipe)

                avio_close(f[i]);

            if(ret[i]>0)

                pkt->size += ret[i];

        }

    }



    if (ret[0] <= 0 || ret[1]<0 || ret[2]<0) {

        av_free_packet(pkt);

        return AVERROR(EIO); 

    } else {

        s->img_count++;

        s->img_number++;

        return 0;

    }

}

    AVIOContext *f[3];                 if(i==1)         if(size[i]){
static int FUNC_0(AVFormatContext *VAR_0, AVPacket *VAR_1)

{

    VideoDemuxData *s = VAR_0->priv_data;

    char VAR_2[1024];

    int VAR_3;

    int VAR_4[3]={0}, VAR_5[3]={0};

    AVIOContext *f[3];

    AVCodecContext *codec= VAR_0->streams[0]->codec;



    if (!s->is_pipe) {

        

        if (s->loop && s->img_number > s->img_last) {

            s->img_number = s->img_first;

        }

        if (s->img_number > s->img_last)

            return AVERROR_EOF;

        if (av_get_frame_filename(VAR_2, sizeof(VAR_2),

                                  s->path, s->img_number)<0 && s->img_number > 1)

            return AVERROR(EIO);

        for(VAR_3=0; VAR_3<3; VAR_3++){

            if (avio_open2(&f[VAR_3], VAR_2, AVIO_FLAG_READ,

                           &VAR_0->interrupt_callback, NULL) < 0) {

                if(VAR_3==1)

                    break;

                av_log(VAR_0, AV_LOG_ERROR, "Could not open file : %s\n",VAR_2);

                return AVERROR(EIO);

            }

            VAR_4[VAR_3]= avio_size(f[VAR_3]);



            if(codec->codec_id != AV_CODEC_ID_RAWVIDEO)

                break;

            VAR_2[ strlen(VAR_2) - 1 ]= 'U' + VAR_3;

        }



        if(codec->codec_id == AV_CODEC_ID_RAWVIDEO && !codec->width)

            infer_size(&codec->width, &codec->height, VAR_4[0]);

    } else {

        f[0] = VAR_0->pb;

        if (f[0]->eof_reached)

            return AVERROR(EIO);

        VAR_4[0]= 4096;

    }



    av_new_packet(VAR_1, VAR_4[0] + VAR_4[1] + VAR_4[2]);

    VAR_1->stream_index = 0;

    VAR_1->flags |= AV_PKT_FLAG_KEY;



    VAR_1->VAR_4= 0;

    for(VAR_3=0; VAR_3<3; VAR_3++){

        if(VAR_4[VAR_3]){

            VAR_5[VAR_3]= avio_read(f[VAR_3], VAR_1->data + VAR_1->VAR_4, VAR_4[VAR_3]);

            if (!s->is_pipe)

                avio_close(f[VAR_3]);

            if(VAR_5[VAR_3]>0)

                VAR_1->VAR_4 += VAR_5[VAR_3];

        }

    }



    if (VAR_5[0] <= 0 || VAR_5[1]<0 || VAR_5[2]<0) {

        av_free_packet(VAR_1);

        return AVERROR(EIO); 

    } else {

        s->img_count++;

        s->img_number++;

        return 0;

    }

}

static int FUNC_0(AVFormatContext *VAR_0, AVPacket *VAR_1)
{ VideoDemuxData *s = VAR_0->priv_data; char VAR_2[1024]; int VAR_3; int VAR_4[3]={0}, VAR_5[3]={0}; AVIOContext *f[3]; AVCodecContext *codec= VAR_0->streams[0]->codec; if (!s->is_pipe) { if (s->loop && s->img_number > s->img_last) { s->img_number = s->img_first; } if (s->img_number > s->img_last)
return AVERROR_EOF; if (av_get_frame_filename(VAR_2, sizeof(VAR_2),
s->path, s->img_number)<0 && s->img_number > 1)
return AVERROR(EIO); for(VAR_3=0; VAR_3<3; VAR_3++){ if (avio_open2(&f[VAR_3], VAR_2, AVIO_FLAG_READ,
&VAR_0->interrupt_callback, NULL) < 0) { if(VAR_3==1)
break; av_log(VAR_0, AV_LOG_ERROR, "Could not open file : %s\n",VAR_2); return AVERROR(EIO); } VAR_4[VAR_3]= avio_size(f[VAR_3]); if(codec->codec_id != AV_CODEC_ID_RAWVIDEO)
break; VAR_2[ strlen(VAR_2) - 1 ]= 'U' + VAR_3; } if(codec->codec_id == AV_CODEC_ID_RAWVIDEO && !codec->width)
infer_size(&codec->width, &codec->height, VAR_4[0]); } else { f[0] = VAR_0->pb; if (f[0]->eof_reached)
return AVERROR(EIO); VAR_4[0]= 4096; } av_new_packet(VAR_1, VAR_4[0] + VAR_4[1] + VAR_4[2]); VAR_1->stream_index = 0; VAR_1->flags |= AV_PKT_FLAG_KEY; VAR_1->VAR_4= 0; for(VAR_3=0; VAR_3<3; VAR_3++){ if(VAR_4[VAR_3]){ VAR_5[VAR_3]= avio_read(f[VAR_3], VAR_1->data + VAR_1->VAR_4, VAR_4[VAR_3]); if (!s->is_pipe)
avio_close(f[VAR_3]); if(VAR_5[VAR_3]>0)
VAR_1->VAR_4 += VAR_5[VAR_3]; } } if (VAR_5[0] <= 0 || VAR_5[1]<0 || VAR_5[2]<0) { av_free_packet(VAR_1); return AVERROR(EIO); } else { s->img_count++; s->img_number++; return 0; } }