static int mxf_read_index_table_segment(void *arg, AVIOContext *pb, int tag, int size, UID uid)

{

    MXFIndexTableSegment *segment = arg;

    switch(tag) {

    case 0x3F05:

        segment->edit_unit_byte_count = avio_rb32(pb);

        av_dlog(NULL, "EditUnitByteCount %d\n", segment->edit_unit_byte_count);

        break;

    case 0x3F06:

        segment->index_sid = avio_rb32(pb);

        av_dlog(NULL, "IndexSID %d\n", segment->index_sid);

        break;

    case 0x3F07:

        segment->body_sid = avio_rb32(pb);

        av_dlog(NULL, "BodySID %d\n", segment->body_sid);

        break;

    case 0x3F08:

        segment->slice_count = avio_r8(pb);

        av_dlog(NULL, "SliceCount %d\n", segment->slice_count);

        break;

    case 0x3F09:

        av_dlog(NULL, "DeltaEntryArray found\n");

        return mxf_read_delta_entry_array(pb, segment);

    case 0x3F0A:

        av_dlog(NULL, "IndexEntryArray found\n");

        return mxf_read_index_entry_array(pb, segment);

    case 0x3F0B:

        segment->index_edit_rate.num = avio_rb32(pb);

        segment->index_edit_rate.den = avio_rb32(pb);

        av_dlog(NULL, "IndexEditRate %d/%d\n", segment->index_edit_rate.num,

                segment->index_edit_rate.den);

        break;

    case 0x3F0C:

        segment->index_start_position = avio_rb64(pb);

        av_dlog(NULL, "IndexStartPosition %"PRId64"\n", segment->index_start_position);

        break;

    case 0x3F0D:

        segment->index_duration = avio_rb64(pb);

        av_dlog(NULL, "IndexDuration %"PRId64"\n", segment->index_duration);

        break;

    }

    return 0;

}

static int mxf_read_index_table_segment(void *arg, AVIOContext *pb, int tag, int size, UID uid)

{

    MXFIndexTableSegment *segment = arg;

    switch(tag) {

    case 0x3F05:

        segment->edit_unit_byte_count = avio_rb32(pb);

        av_dlog(NULL, "EditUnitByteCount %d\n", segment->edit_unit_byte_count);

        break;

    case 0x3F06:

        segment->index_sid = avio_rb32(pb);

        av_dlog(NULL, "IndexSID %d\n", segment->index_sid);

        break;

    case 0x3F07:

        segment->body_sid = avio_rb32(pb);

        av_dlog(NULL, "BodySID %d\n", segment->body_sid);

        break;

    case 0x3F08:

        segment->slice_count = avio_r8(pb);

        av_dlog(NULL, "SliceCount %d\n", segment->slice_count);

        break;

    case 0x3F09:

        av_dlog(NULL, "DeltaEntryArray found\n");

        return mxf_read_delta_entry_array(pb, segment);

    case 0x3F0A:

        av_dlog(NULL, "IndexEntryArray found\n");

        return mxf_read_index_entry_array(pb, segment);

    case 0x3F0B:

        segment->index_edit_rate.num = avio_rb32(pb);

        segment->index_edit_rate.den = avio_rb32(pb);

        av_dlog(NULL, "IndexEditRate %d/%d\n", segment->index_edit_rate.num,

                segment->index_edit_rate.den);

        break;

    case 0x3F0C:

        segment->index_start_position = avio_rb64(pb);

        av_dlog(NULL, "IndexStartPosition %"PRId64"\n", segment->index_start_position);

        break;

    case 0x3F0D:

        segment->index_duration = avio_rb64(pb);

        av_dlog(NULL, "IndexDuration %"PRId64"\n", segment->index_duration);

        break;

    }

    return 0;

}

static int mxf_read_index_table_segment(void *arg, AVIOContext *pb, int tag, int size, UID uid)
static int FUNC_0(void *VAR_0, AVIOContext *VAR_1, int VAR_2, int VAR_3, UID VAR_4)

{

    MXFIndexTableSegment *segment = VAR_0;

    switch(VAR_2) {

    case 0x3F05:

        segment->edit_unit_byte_count = avio_rb32(VAR_1);

        av_dlog(NULL, "EditUnitByteCount %d\n", segment->edit_unit_byte_count);

        break;

    case 0x3F06:

        segment->index_sid = avio_rb32(VAR_1);

        av_dlog(NULL, "IndexSID %d\n", segment->index_sid);

        break;

    case 0x3F07:

        segment->body_sid = avio_rb32(VAR_1);

        av_dlog(NULL, "BodySID %d\n", segment->body_sid);

        break;

    case 0x3F08:

        segment->slice_count = avio_r8(VAR_1);

        av_dlog(NULL, "SliceCount %d\n", segment->slice_count);

        break;

    case 0x3F09:

        av_dlog(NULL, "DeltaEntryArray found\n");

        return mxf_read_delta_entry_array(VAR_1, segment);

    case 0x3F0A:

        av_dlog(NULL, "IndexEntryArray found\n");

        return mxf_read_index_entry_array(VAR_1, segment);

    case 0x3F0B:

        segment->index_edit_rate.num = avio_rb32(VAR_1);

        segment->index_edit_rate.den = avio_rb32(VAR_1);

        av_dlog(NULL, "IndexEditRate %d/%d\n", segment->index_edit_rate.num,

                segment->index_edit_rate.den);

        break;

    case 0x3F0C:

        segment->index_start_position = avio_rb64(VAR_1);

        av_dlog(NULL, "IndexStartPosition %"PRId64"\n", segment->index_start_position);

        break;

    case 0x3F0D:

        segment->index_duration = avio_rb64(VAR_1);

        av_dlog(NULL, "IndexDuration %"PRId64"\n", segment->index_duration);

        break;

    }

    return 0;

}

static int FUNC_0(void *VAR_0, AVIOContext *VAR_1, int VAR_2, int VAR_3, UID VAR_4)
{ MXFIndexTableSegment *segment = VAR_0; switch(VAR_2) { case 0x3F05:
segment->edit_unit_byte_count = avio_rb32(VAR_1); av_dlog(NULL, "EditUnitByteCount %d\n", segment->edit_unit_byte_count); break; case 0x3F06:
segment->index_sid = avio_rb32(VAR_1); av_dlog(NULL, "IndexSID %d\n", segment->index_sid); break; case 0x3F07:
segment->body_sid = avio_rb32(VAR_1); av_dlog(NULL, "BodySID %d\n", segment->body_sid); break; case 0x3F08:
segment->slice_count = avio_r8(VAR_1); av_dlog(NULL, "SliceCount %d\n", segment->slice_count); break; case 0x3F09:
av_dlog(NULL, "DeltaEntryArray found\n"); return mxf_read_delta_entry_array(VAR_1, segment); case 0x3F0A:
av_dlog(NULL, "IndexEntryArray found\n"); return mxf_read_index_entry_array(VAR_1, segment); case 0x3F0B:
segment->index_edit_rate.num = avio_rb32(VAR_1); segment->index_edit_rate.den = avio_rb32(VAR_1); av_dlog(NULL, "IndexEditRate %d/%d\n", segment->index_edit_rate.num,
segment->index_edit_rate.den); break; case 0x3F0C:
segment->index_start_position = avio_rb64(VAR_1); av_dlog(NULL, "IndexStartPosition %"PRId64"\n", segment->index_start_position); break; case 0x3F0D:
segment->index_duration = avio_rb64(VAR_1); av_dlog(NULL, "IndexDuration %"PRId64"\n", segment->index_duration); break; } return 0; }