コード例 #1
0
ファイル: pg_decode.c プロジェクト: hongxchen/RTPServer
int pg_decode_composition(BITBUFFER *bb, BD_PG_COMPOSITION *p)
{
    unsigned ii;

    pg_decode_video_descriptor(bb, &p->video_descriptor);
    pg_decode_composition_descriptor(bb, &p->composition_descriptor);

    p->palette_update_flag = bb_read(bb, 1);
    bb_skip(bb, 7);

    p->palette_id_ref      = bb_read(bb, 8);

    p->num_composition_objects = bb_read(bb, 8);
    p->composition_object      = calloc(p->num_composition_objects, sizeof(BD_PG_COMPOSITION_OBJECT));

    for (ii = 0; ii < p->num_composition_objects; ii++) {
        pg_decode_composition_object(bb, &p->composition_object[ii]);
    }

    return 1;
}
コード例 #2
0
int ig_decode_interactive(BITBUFFER *bb, BD_IG_INTERACTIVE *p)
{
    BD_PG_SEQUENCE_DESCRIPTOR sd;

    pg_decode_video_descriptor(bb, &p->video_descriptor);
    pg_decode_composition_descriptor(bb, &p->composition_descriptor);
    pg_decode_sequence_descriptor(bb, &sd);

    if (!sd.first_in_seq) {
        ERROR("ig_decode_interactive(): not first in seq\n");
        return 0;
    }
    if (!sd.last_in_seq) {
        ERROR("ig_decode_interactive(): not last in seq\n");
        return 0;
    }
    if (!bb_is_align(bb, 0x07)) {
        ERROR("ig_decode_interactive(): alignment error\n");
        return 0;
    }

    return _decode_interactive_composition(bb, &p->interactive_composition);
}