GF_Err mdri_Size(GF_Box *s) { GF_Err e; GF_OMADRMMutableInformationBox *ptr = (GF_OMADRMMutableInformationBox *)s; if (!s) return GF_BAD_PARAM; e = gf_isom_box_get_size(s); if (e) return e; return gf_isom_box_array_size(s, ptr->boxes); }
GF_Err iinf_Size(GF_Box *s) { u32 count; GF_ItemInfoBox *ptr = (GF_ItemInfoBox *)s; if (!s) return GF_BAD_PARAM; ptr->size += (ptr->version == 0) ? 2 : 4; if ((count = gf_list_count(ptr->item_infos))) { gf_isom_box_array_size(s, ptr->item_infos); } return GF_OK; }
GF_Err ghnt_Size(GF_Box *s) { GF_Err e; GF_HintSampleEntryBox *ptr = (GF_HintSampleEntryBox *)s; e = gf_isom_box_get_size(s); if (e) return e; ptr->size += 16; e = gf_isom_box_array_size(s, ptr->HintDataTable); if (e) return e; return GF_OK; }
GF_Err ohdr_Size(GF_Box *s) { GF_Err e; GF_OMADRMCommonHeaderBox *ptr = (GF_OMADRMCommonHeaderBox *)s; if (!s) return GF_BAD_PARAM; e = gf_isom_full_box_get_size(s); if (e) return e; ptr->size += 1+1+8+2+2+2; if (ptr->ContentID) ptr->size += strlen(ptr->ContentID); if (ptr->RightsIssuerURL) ptr->size += strlen(ptr->RightsIssuerURL); if (ptr->TextualHeadersLen) ptr->size += ptr->TextualHeadersLen; return gf_isom_box_array_size(s, ptr->ExtendedHeaders); }
GF_Err gf_isom_hint_rtp_write(GF_RTPPacket *ptr, GF_BitStream *bs) { GF_Err e; u32 TLVcount, DTEcount, i; GF_Box none; GF_GenericDTE *dte; gf_bs_write_u32(bs, ptr->relativeTransTime); //RTP Header // gf_bs_write_int(bs, 2, 2); //version is 2 gf_bs_write_int(bs, 2, 2); gf_bs_write_int(bs, ptr->P_bit, 1); gf_bs_write_int(bs, ptr->X_bit, 1); gf_bs_write_int(bs, 0, 4); gf_bs_write_int(bs, ptr->M_bit, 1); gf_bs_write_int(bs, ptr->payloadType, 7); gf_bs_write_u16(bs, ptr->SequenceNumber); gf_bs_write_int(bs, 0, 13); TLVcount = gf_list_count(ptr->TLV); DTEcount = gf_list_count(ptr->DataTable); gf_bs_write_int(bs, TLVcount ? 1 : 0, 1); gf_bs_write_int(bs, ptr->B_bit, 1); gf_bs_write_int(bs, ptr->R_bit, 1); gf_bs_write_u16(bs, DTEcount); if (TLVcount) { //first write the size of the table ... none.size = 4; //WE INCLUDE THE SIZE FIELD LENGTH none.type = 0; gf_isom_box_array_size(&none, ptr->TLV); gf_bs_write_u32(bs, (u32) none.size); e = gf_isom_box_array_write(&none, ptr->TLV, bs); if (e) return e; } //write the DTE... for (i = 0; i < DTEcount; i++) { dte = (GF_GenericDTE *)gf_list_get(ptr->DataTable, i); e = WriteDTE(dte, bs); if (e) return e; } return GF_OK; }
u32 gf_isom_hint_rtp_size(GF_RTPPacket *ptr) { GF_Box none; u32 size, count; //the RTP Header size and co size = 12; //the extra table size count = gf_list_count(ptr->TLV); if (count) { none.size = 4; //WE INCLUDE THE SIZE FIELD LENGTH none.type = 0; //REMEMBER THAT TLV ENTRIES ARE 4-BYTES ALIGNED !!! gf_isom_box_array_size(&none, ptr->TLV); size += (u32) none.size; } //the DTE (each entry is 16 bytes) count = gf_list_count(ptr->DataTable); size += count * 16; return size; }