📄 box_code_3gpp.c
字号:
/*base + this + box + style*/ s->size += 18 + GPP_BOX_SIZE + GPP_STYLE_SIZE; if (ptr->font_table) { e = gf_isom_box_size((GF_Box *) ptr->font_table); if (e) return e; s->size += ptr->font_table->size; } return GF_OK;}#endifGF_Box *styl_New(){ GF_TextStyleBox *tmp; GF_SAFEALLOC(tmp, GF_TextStyleBox); if (!tmp) return NULL; tmp->type = GF_ISOM_BOX_TYPE_STYL; return (GF_Box *) tmp;}void styl_del(GF_Box *s){ GF_TextStyleBox*ptr = (GF_TextStyleBox*)s; if (ptr->styles) free(ptr->styles); free(ptr);}GF_Err styl_Read(GF_Box *s, GF_BitStream *bs){ u32 i; GF_TextStyleBox*ptr = (GF_TextStyleBox*)s; ptr->entry_count = gf_bs_read_u16(bs); if (ptr->entry_count) { ptr->styles = (GF_StyleRecord*)malloc(sizeof(GF_StyleRecord)*ptr->entry_count); for (i=0; i<ptr->entry_count; i++) { gpp_read_style(bs, &ptr->styles[i]); } } return GF_OK;}#ifndef GPAC_READ_ONLYGF_Err styl_Write(GF_Box *s, GF_BitStream *bs){ GF_Err e; u32 i; GF_TextStyleBox*ptr = (GF_TextStyleBox*)s; e = gf_isom_box_write_header(s, bs); gf_bs_write_u16(bs, ptr->entry_count); for (i=0; i<ptr->entry_count; i++) gpp_write_style(bs, &ptr->styles[i]); return GF_OK;}GF_Err styl_Size(GF_Box *s){ GF_TextStyleBox*ptr = (GF_TextStyleBox*)s; GF_Err e = gf_isom_box_get_size(s); if (e) return e; s->size += 2 + ptr->entry_count * GPP_STYLE_SIZE; return GF_OK;}#endifGF_Box *hlit_New(){ GF_TextHighlightBox *tmp; GF_SAFEALLOC(tmp, GF_TextHighlightBox); if (!tmp) return NULL; tmp->type = GF_ISOM_BOX_TYPE_HLIT; return (GF_Box *) tmp;}void hlit_del(GF_Box *s){ free(s);}GF_Err hlit_Read(GF_Box *s, GF_BitStream *bs){ GF_TextHighlightBox *ptr = (GF_TextHighlightBox *)s; ptr->startcharoffset = gf_bs_read_u16(bs); ptr->endcharoffset = gf_bs_read_u16(bs); return GF_OK;}#ifndef GPAC_READ_ONLYGF_Err hlit_Write(GF_Box *s, GF_BitStream *bs){ GF_Err e; GF_TextHighlightBox *ptr = (GF_TextHighlightBox *)s; e = gf_isom_box_write_header(s, bs); if (e) return e; gf_bs_write_u16(bs, ptr->startcharoffset); gf_bs_write_u16(bs, ptr->endcharoffset); return GF_OK;}GF_Err hlit_Size(GF_Box *s){ GF_Err e = gf_isom_box_get_size(s); if (e) return e; s->size += 4; return GF_OK;}#endifGF_Box *hclr_New(){ GF_TextHighlightColorBox*tmp; GF_SAFEALLOC(tmp, GF_TextHighlightColorBox); if (!tmp) return NULL; tmp->type = GF_ISOM_BOX_TYPE_HCLR; return (GF_Box *) tmp;}void hclr_del(GF_Box *s){ free(s);}GF_Err hclr_Read(GF_Box *s, GF_BitStream *bs){ GF_TextHighlightColorBox*ptr = (GF_TextHighlightColorBox*)s; ptr->hil_color = gpp_read_rgba(bs); return GF_OK;}#ifndef GPAC_READ_ONLYGF_Err hclr_Write(GF_Box *s, GF_BitStream *bs){ GF_Err e; GF_TextHighlightColorBox*ptr = (GF_TextHighlightColorBox*)s; e = gf_isom_box_write_header(s, bs); if (e) return e; gpp_write_rgba(bs, ptr->hil_color); return GF_OK;}GF_Err hclr_Size(GF_Box *s){ GF_Err e = gf_isom_box_get_size(s); if (e) return e; s->size += 4; return GF_OK;}#endifGF_Box *krok_New(){ GF_TextKaraokeBox*tmp; GF_SAFEALLOC(tmp, GF_TextKaraokeBox); if (!tmp) return NULL; tmp->type = GF_ISOM_BOX_TYPE_KROK; return (GF_Box *) tmp;}void krok_del(GF_Box *s){ GF_TextKaraokeBox*ptr = (GF_TextKaraokeBox*)s; if (ptr->records) free(ptr->records); free(ptr);}GF_Err krok_Read(GF_Box *s, GF_BitStream *bs){ GF_TextKaraokeBox*ptr = (GF_TextKaraokeBox*)s; ptr->highlight_starttime = gf_bs_read_u32(bs); ptr->entrycount = gf_bs_read_u16(bs); if (ptr->entrycount) { u32 i; ptr->records = (KaraokeRecord*)malloc(sizeof(KaraokeRecord)*ptr->entrycount); for (i=0; i<ptr->entrycount; i++) { ptr->records[i].highlight_endtime = gf_bs_read_u32(bs); ptr->records[i].start_charoffset = gf_bs_read_u16(bs); ptr->records[i].end_charoffset = gf_bs_read_u16(bs); } } return GF_OK;}#ifndef GPAC_READ_ONLYGF_Err krok_Write(GF_Box *s, GF_BitStream *bs){ GF_Err e; u32 i; GF_TextKaraokeBox*ptr = (GF_TextKaraokeBox*)s; e = gf_isom_box_write_header(s, bs); if (e) return e; gf_bs_write_u32(bs, ptr->highlight_starttime); gf_bs_write_u16(bs, ptr->entrycount); for (i=0; i<ptr->entrycount; i++) { gf_bs_write_u32(bs, ptr->records[i].highlight_endtime); gf_bs_write_u16(bs, ptr->records[i].start_charoffset); gf_bs_write_u16(bs, ptr->records[i].end_charoffset); } return GF_OK;}GF_Err krok_Size(GF_Box *s){ GF_TextKaraokeBox*ptr = (GF_TextKaraokeBox*)s; GF_Err e = gf_isom_box_get_size(s); if (e) return e; s->size += 6 * 8*ptr->entrycount; return GF_OK;}#endifGF_Box *dlay_New(){ GF_TextScrollDelayBox*tmp; GF_SAFEALLOC(tmp, GF_TextScrollDelayBox); if (!tmp) return NULL; tmp->type = GF_ISOM_BOX_TYPE_DLAY; return (GF_Box *) tmp;}void dlay_del(GF_Box *s){ free(s);}GF_Err dlay_Read(GF_Box *s, GF_BitStream *bs){ GF_TextScrollDelayBox*ptr = (GF_TextScrollDelayBox*)s; ptr->scroll_delay = gf_bs_read_u32(bs); return GF_OK;}#ifndef GPAC_READ_ONLYGF_Err dlay_Write(GF_Box *s, GF_BitStream *bs){ GF_Err e; GF_TextScrollDelayBox*ptr = (GF_TextScrollDelayBox*)s; e = gf_isom_box_write_header(s, bs); if (e) return e; gf_bs_write_u32(bs, ptr->scroll_delay); return GF_OK;}GF_Err dlay_Size(GF_Box *s){ GF_Err e = gf_isom_box_get_size(s); if (e) return e; s->size += 4; return GF_OK;}#endifGF_Box *href_New(){ GF_TextHyperTextBox*tmp; GF_SAFEALLOC(tmp, GF_TextHyperTextBox); if (!tmp) return NULL; tmp->type = GF_ISOM_BOX_TYPE_HREF; return (GF_Box *) tmp;}void href_del(GF_Box *s){ GF_TextHyperTextBox*ptr = (GF_TextHyperTextBox*)s; if (ptr->URL) free(ptr->URL); if (ptr->URL_hint) free(ptr->URL_hint); free(ptr);}GF_Err href_Read(GF_Box *s, GF_BitStream *bs){ u32 len; GF_TextHyperTextBox*ptr = (GF_TextHyperTextBox*)s; ptr->startcharoffset = gf_bs_read_u16(bs); ptr->endcharoffset = gf_bs_read_u16(bs); len = gf_bs_read_u8(bs); if (len) { ptr->URL = (char *) malloc(sizeof(char) * (len+1)); gf_bs_read_data(bs, ptr->URL, len); ptr->URL[len] = 0; } len = gf_bs_read_u8(bs); if (len) { ptr->URL_hint = (char *) malloc(sizeof(char) * (len+1)); gf_bs_read_data(bs, ptr->URL_hint, len); ptr->URL_hint[len]= 0; } return GF_OK;}#ifndef GPAC_READ_ONLYGF_Err href_Write(GF_Box *s, GF_BitStream *bs){ u32 len; GF_Err e; GF_TextHyperTextBox*ptr = (GF_TextHyperTextBox*)s; e = gf_isom_box_write_header(s, bs); if (e) return e; gf_bs_write_u16(bs, ptr->startcharoffset); gf_bs_write_u16(bs, ptr->endcharoffset); if (ptr->URL) { len = strlen(ptr->URL); gf_bs_write_u8(bs, len); gf_bs_write_data(bs, ptr->URL, len); } else { gf_bs_write_u8(bs, 0); } if (ptr->URL_hint) { len = strlen(ptr->URL_hint); gf_bs_write_u8(bs, len); gf_bs_write_data(bs, ptr->URL_hint, len); } else { gf_bs_write_u8(bs, 0); } return GF_OK;}GF_Err href_Size(GF_Box *s){ GF_TextHyperTextBox*ptr = (GF_TextHyperTextBox*)s; GF_Err e = gf_isom_box_get_size(s); if (e) return e; s->size += 6; if (ptr->URL) s->size += strlen(ptr->URL); if (ptr->URL_hint) s->size += strlen(ptr->URL_hint); return GF_OK;}#endifGF_Box *tbox_New(){ GF_TextBoxBox*tmp; GF_SAFEALLOC(tmp, GF_TextBoxBox); if (!tmp) return NULL; tmp->type = GF_ISOM_BOX_TYPE_TBOX; return (GF_Box *) tmp;}void tbox_del(GF_Box *s){ free(s);}GF_Err tbox_Read(GF_Box *s, GF_BitStream *bs){ GF_TextBoxBox*ptr = (GF_TextBoxBox*)s; gpp_read_box(bs, &ptr->box); return GF_OK;}#ifndef GPAC_READ_ONLYGF_Err tbox_Write(GF_Box *s, GF_BitStream *bs){ GF_Err e; GF_TextBoxBox*ptr = (GF_TextBoxBox*)s; e = gf_isom_box_write_header(s, bs); if (e) return e; gpp_write_box(bs, &ptr->box); return GF_OK;}GF_Err tbox_Size(GF_Box *s){ GF_Err e = gf_isom_box_get_size(s); if (e) return e; s->size += 8; return GF_OK;}#endifGF_Box *blnk_New(){ GF_TextBlinkBox*tmp; GF_SAFEALLOC(tmp, GF_TextBlinkBox); if (!tmp) return NULL; tmp->type = GF_ISOM_BOX_TYPE_BLNK; return (GF_Box *) tmp;}void blnk_del(GF_Box *s){ free(s);}GF_Err blnk_Read(GF_Box *s, GF_BitStream *bs){ GF_TextBlinkBox*ptr = (GF_TextBlinkBox*)s; ptr->startcharoffset = gf_bs_read_u16(bs); ptr->endcharoffset = gf_bs_read_u16(bs); return GF_OK;}#ifndef GPAC_READ_ONLYGF_Err blnk_Write(GF_Box *s, GF_BitStream *bs){ GF_Err e; GF_TextBlinkBox*ptr = (GF_TextBlinkBox*)s; e = gf_isom_box_write_header(s, bs); if (e) return e; gf_bs_write_u16(bs, ptr->startcharoffset); gf_bs_write_u16(bs, ptr->endcharoffset); return GF_OK;}GF_Err blnk_Size(GF_Box *s){ GF_Err e = gf_isom_box_get_size(s); if (e) return e; s->size += 4; return GF_OK;}#endifGF_Box *twrp_New(){ GF_TextWrapBox*tmp; GF_SAFEALLOC(tmp, GF_TextWrapBox); if (!tmp) return NULL; tmp->type = GF_ISOM_BOX_TYPE_TWRP; return (GF_Box *) tmp;}void twrp_del(GF_Box *s){ free(s);}GF_Err twrp_Read(GF_Box *s, GF_BitStream *bs){ GF_TextWrapBox*ptr = (GF_TextWrapBox*)s; ptr->wrap_flag = gf_bs_read_u8(bs); return GF_OK;}#ifndef GPAC_READ_ONLYGF_Err twrp_Write(GF_Box *s, GF_BitStream *bs){ GF_Err e; GF_TextWrapBox*ptr = (GF_TextWrapBox*)s; e = gf_isom_box_write_header(s, bs); if (e) return e; gf_bs_write_u8(bs, ptr->wrap_flag); return GF_OK;}GF_Err twrp_Size(GF_Box *s){ GF_Err e = gf_isom_box_get_size(s); if (e) return e; s->size += 1; return GF_OK;}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -