static int avisynth_read_packet_video(AVFormatContext *s, AVPacket *pkt, int discard) {

    AviSynthContext *avs = s->priv_data;

    AVS_VideoFrame *frame;

    unsigned char *dst_p;

    const unsigned char *src_p;

    int n, i, plane, rowsize, planeheight, pitch, bits;

    const char *error;



    if (avs->curr_frame >= avs->vi->num_frames)

        return AVERROR_EOF;



    // This must happen even if the stream is discarded to prevent desync.

    n = avs->curr_frame++;

    if (discard)

        return 0;



    pkt->pts = n;

    pkt->dts = n;

    pkt->duration = 1;



    // Define the bpp values for the new AviSynth 2.6 colorspaces

    if (avs_is_yv24(avs->vi)) {

        bits = 24;

    } else if (avs_is_yv16(avs->vi)) {

        bits = 16;

    } else if (avs_is_yv411(avs->vi)) {

        bits = 12;

    } else if (avs_is_y8(avs->vi)) {

        bits = 8;


        bits = avs_bits_per_pixel(avs->vi);




    // Without cast to int64_t, calculation overflows at about 9k x 9k resolution.

    pkt->size = (((int64_t)avs->vi->width * (int64_t)avs->vi->height) * bits) / 8;

    if (!pkt->size)


    pkt->data = av_malloc(pkt->size);

    if (!pkt->data)




    frame = avs_library->avs_get_frame(avs->clip, n);

    error = avs_library->avs_clip_get_error(avs->clip);

    if (error) {

        av_log(s, AV_LOG_ERROR, "%s\n", error);







    dst_p = pkt->data;

    for (i = 0; i < avs->n_planes; i++) {

        plane = avs->planes[i];

        src_p = avs_get_read_ptr_p(frame, plane);

        rowsize = avs_get_row_size_p(frame, plane);

        planeheight = avs_get_height_p(frame, plane);

        pitch = avs_get_pitch_p(frame, plane);



        // Flip RGB video.

        if (avs_is_rgb24(avs->vi) || avs_is_rgb(avs->vi)) {

            src_p = src_p + (planeheight - 1) * pitch;

            pitch = -pitch;
























        dst_p += rowsize * planeheight;




    avs_library->avs_release_video_frame(frame);

    return 0;

static int avisynth_read_packet_video(AVFormatContext *s, AVPacket *pkt, int discard) {

    AviSynthContext *avs = s->priv_data;

    AVS_VideoFrame *frame;

    unsigned char *dst_p;

    const unsigned char *src_p;

    int n, i, plane, rowsize, planeheight, pitch, bits;

    const char *error;



    if (avs->curr_frame >= avs->vi->num_frames)

        return AVERROR_EOF;



    

    n = avs->curr_frame++;

    if (discard)

        return 0;



    pkt->pts = n;

    pkt->dts = n;

    pkt->duration = 1;



    

    if (avs_is_yv24(avs->vi)) {

        bits = 24;

    } else if (avs_is_yv16(avs->vi)) {

        bits = 16;

    } else if (avs_is_yv411(avs->vi)) {

        bits = 12;

    } else if (avs_is_y8(avs->vi)) {

        bits = 8;


        bits = avs_bits_per_pixel(avs->vi);




    

    pkt->size = (((int64_t)avs->vi->width * (int64_t)avs->vi->height) * bits) / 8;

    if (!pkt->size)


    pkt->data = av_malloc(pkt->size);

    if (!pkt->data)




    frame = avs_library->avs_get_frame(avs->clip, n);

    error = avs_library->avs_clip_get_error(avs->clip);

    if (error) {

        av_log(s, AV_LOG_ERROR, "%s\n", error);







    dst_p = pkt->data;

    for (i = 0; i < avs->n_planes; i++) {

        plane = avs->planes[i];

        src_p = avs_get_read_ptr_p(frame, plane);

        rowsize = avs_get_row_size_p(frame, plane);

        planeheight = avs_get_height_p(frame, plane);

        pitch = avs_get_pitch_p(frame, plane);



        

        if (avs_is_rgb24(avs->vi) || avs_is_rgb(avs->vi)) {

            src_p = src_p + (planeheight - 1) * pitch;

            pitch = -pitch;
























        dst_p += rowsize * planeheight;




    avs_library->avs_release_video_frame(frame);

    return 0;

static int FUNC_0(AVFormatContext *VAR_0, AVPacket *VAR_1, int VAR_2) {

    AviSynthContext *avs = VAR_0->priv_data;

    AVS_VideoFrame *frame;

    unsigned char *VAR_3;

    const unsigned char *VAR_4;

    int VAR_5, VAR_6, VAR_7, VAR_8, VAR_9, VAR_10, VAR_11;

    const char *VAR_12;



    if (avs->curr_frame >= avs->vi->num_frames)

        return AVERROR_EOF;



    

    VAR_5 = avs->curr_frame++;

    if (VAR_2)

        return 0;



    VAR_1->pts = VAR_5;

    VAR_1->dts = VAR_5;

    VAR_1->duration = 1;



    

    if (avs_is_yv24(avs->vi)) {

        VAR_11 = 24;

    } else if (avs_is_yv16(avs->vi)) {

        VAR_11 = 16;

    } else if (avs_is_yv411(avs->vi)) {

        VAR_11 = 12;

    } else if (avs_is_y8(avs->vi)) {

        VAR_11 = 8;


        VAR_11 = avs_bits_per_pixel(avs->vi);




    

    VAR_1->size = (((int64_t)avs->vi->width * (int64_t)avs->vi->height) * VAR_11) / 8;

    if (!VAR_1->size)


    VAR_1->data = av_malloc(VAR_1->size);

    if (!VAR_1->data)




    frame = avs_library->avs_get_frame(avs->clip, VAR_5);

    VAR_12 = avs_library->avs_clip_get_error(avs->clip);

    if (VAR_12) {

        av_log(VAR_0, AV_LOG_ERROR, "%VAR_0\VAR_5", VAR_12);







    VAR_3 = VAR_1->data;

    for (VAR_6 = 0; VAR_6 < avs->n_planes; VAR_6++) {

        VAR_7 = avs->planes[VAR_6];

        VAR_4 = avs_get_read_ptr_p(frame, VAR_7);

        VAR_8 = avs_get_row_size_p(frame, VAR_7);

        VAR_9 = avs_get_height_p(frame, VAR_7);

        VAR_10 = avs_get_pitch_p(frame, VAR_7);



        

        if (avs_is_rgb24(avs->vi) || avs_is_rgb(avs->vi)) {

            VAR_4 = VAR_4 + (VAR_9 - 1) * VAR_10;

            VAR_10 = -VAR_10;
























        VAR_3 += VAR_8 * VAR_9;




    avs_library->avs_release_video_frame(frame);

    return 0;

static int FUNC_0(AVFormatContext *VAR_0, AVPacket *VAR_1, int VAR_2) { AviSynthContext *avs = VAR_0->priv_data; AVS_VideoFrame *frame; unsigned char *VAR_3; const unsigned char *VAR_4; int VAR_5, VAR_6, VAR_7, VAR_8, VAR_9, VAR_10, VAR_11; const char *VAR_12; if (avs->curr_frame >= avs->vi->num_frames)
return AVERROR_EOF; VAR_5 = avs->curr_frame++; if (VAR_2)
return 0; VAR_1->pts = VAR_5; VAR_1->dts = VAR_5; VAR_1->duration = 1; if (avs_is_yv24(avs->vi)) { VAR_11 = 24; } else if (avs_is_yv16(avs->vi)) { VAR_11 = 16; } else if (avs_is_yv411(avs->vi)) { VAR_11 = 12; } else if (avs_is_y8(avs->vi)) { VAR_11 = 8; VAR_11 = avs_bits_per_pixel(avs->vi); VAR_1->size = (((int64_t)avs->vi->width * (int64_t)avs->vi->height) * VAR_11) / 8; if (!VAR_1->size)
VAR_1->data = av_malloc(VAR_1->size); if (!VAR_1->data)
frame = avs_library->avs_get_frame(avs->clip, VAR_5); VAR_12 = avs_library->avs_clip_get_error(avs->clip); if (VAR_12) { av_log(VAR_0, AV_LOG_ERROR, "%VAR_0\VAR_5", VAR_12); VAR_3 = VAR_1->data; for (VAR_6 = 0; VAR_6 < avs->n_planes; VAR_6++) { VAR_7 = avs->planes[VAR_6]; VAR_4 = avs_get_read_ptr_p(frame, VAR_7); VAR_8 = avs_get_row_size_p(frame, VAR_7); VAR_9 = avs_get_height_p(frame, VAR_7); VAR_10 = avs_get_pitch_p(frame, VAR_7); if (avs_is_rgb24(avs->vi) || avs_is_rgb(avs->vi)) { VAR_4 = VAR_4 + (VAR_9 - 1) * VAR_10; VAR_10 = -VAR_10; VAR_3 += VAR_8 * VAR_9; avs_library->avs_release_video_frame(frame); return 0;