static int decode_nal_sei_user_data_registered_itu_t_t35(HEVCContext *s, int size) { uint32_t country_code; uint32_t user_identifier; GetBitContext *gb = &s->HEVClc->gb; if (size < 7) return AVERROR(EINVAL); size -= 7; country_code = get_bits(gb, 8); if (country_code == 0xFF) { skip_bits(gb, 8); size--; } skip_bits(gb, 8); skip_bits(gb, 8); user_identifier = get_bits_long(gb, 32); switch (user_identifier) { case MKBETAG('G', 'A', '9', '4'): return decode_registered_user_data_closed_caption(s, size); default: skip_bits_long(gb, size * 8); break; } return 0; }
static int decode_registered_user_data(H264SEIContext *h, GetBitContext *gb, void *logctx, int size) { uint32_t country_code; uint32_t user_identifier; if (size < 7) return AVERROR_INVALIDDATA; size -= 7; country_code = get_bits(gb, 8); // itu_t_t35_country_code if (country_code == 0xFF) { skip_bits(gb, 8); // itu_t_t35_country_code_extension_byte size--; } /* itu_t_t35_payload_byte follows */ skip_bits(gb, 8); // terminal provider code skip_bits(gb, 8); // terminal provider oriented code user_identifier = get_bits_long(gb, 32); switch (user_identifier) { case MKBETAG('D', 'T', 'G', '1'): // afd_data return decode_registered_user_data_afd(&h->afd, gb, size); case MKBETAG('G', 'A', '9', '4'): // closed captions return decode_registered_user_data_closed_caption(&h->a53_caption, gb, logctx, size); default: skip_bits(gb, size * 8); break; } return 0; }