blob: 9ee025b7cf09e6ac7f62af35df8c0a8f797cb083 [file] [edit]
#this is an example BT file for most supported IPMPX descriptors and data in MP4Box.
#Some of the IPMPX_Data used will likely never be sent on the wire (only sent through tools) but
#their coding is still supported
#for XMT syntax, do as usual in gpac: MP4Box -xmt file.bt
#As a general note, it is almost useless to try to use IPMPX without the spec :)
#Please be aware that the IPMPX data described in this file is useless in terms of protection & IPMPX usage in MPEG-4 content, it is
#just here for IPMPX encoding/decoding testing...
InitialObjectDescriptor {
esDescr [
ES_Descriptor {
ES_ID 1
decConfigDescr DecoderConfigDescriptor {
streamType 3
}
}
ES_Descriptor {
ES_ID 2
decConfigDescr DecoderConfigDescriptor {
streamType 1
}
}
]
ipmpDescr [
IPMP_Descriptor {
IPMP_DescriptorID 0xff
IPMPS_Type 0xffff
IPMP_DescriptorIDEx 69
IPMP_ToolID 123
controlPointCode 0x01
sequenceCode 0x00
}
]
toolListDescr IPMP_ToolListDescriptor {
ipmpTool [
#GPAC DOES NOT support alternativeTools and ParametricDescription in IPMP_Tool yet !!
IPMP_Tool {
IPMP_ToolID 128
ToolURL "http://gpac.io/ipmp/tools/gpac_decrypt"
}
]
}
}
OrderedGroup {
children [
Sound2D {
source AudioSource {
url "myfile.avi#audio"
}
}
Shape {
geometry Bitmap {}
appearance Appearance {
texture MovieTexture {
url "myfile.avi#video"
}
}
}
]
}
UPDATE IPMPDX [
IPMP_Descriptor {
IPMP_DescriptorID 0xff
IPMPS_Type 0xffff
IPMP_DescriptorIDEx 79
IPMP_ToolID 123
controlPointCode 0x01
sequenceCode 0x00
IPMPX_Data [
IPMP_KeyData {
#GPAC also accepts the syntax: keyBody "snclsdjlvksjdls" for IPMPX ByteArray in BT format. This is what will be used later on
keyBody {
array "keybody_bytearray"
}
hasStartDTS FALSE
hasStartPacketID FALSE
hasExpireDTS FALSE
hasExpirePacketID FALSE
opaqueData "IPMPkey-opaquedata byte array"
}
IPMP_SecureContainer {
encryptedData "the encrypted data"
MAC "the mac data"
}
IPMP_InitAuthentication {
Context 32
AuthType 5
}
IPMP_MutualAuthentication {
candidateAlgorithms [
IPMP_AlgorithmDescriptor { regAlgoID 102 }
IPMP_AlgorithmDescriptor { regAlgoID 103 }
]
AuthenticationData "dbs,qbdjsqbxkjqsl"
trustData IPMP_TrustSecurityMetadata {
trustedTools [
IPMP_TrustedTool {
toolID 1245
trustSpecifications [
IPMP_TrustSpecification {
attackerProfile 98
trustedDuration 123258
}
]
}
]
}
#the syntax here is a bit weird, the list of IPMPX_ByteArray is just the list of each array content. XMT syntax is cleaner
certificates [
"khdhskncksdnfk",
"vghjxdbjzhfkjerunxinqms"
]
publicKey IPMP_KeyDescriptor {
keyBody "key descriptor body data"
}
opaque "mutual authentication opaque data"
authCodes "mutual authentication codes"
}
IPMP_ToolParamCapabilitiesQuery {
description IPMP_ParametricDescription {
majorVersion 2
minorVersion 1
descriptionComment "This is a parametric description"
descriptions [
IPMP_ParametricDescriptionItem {
class "encryption"
subClass "DES"
typeData "char"
type "algo"
addedData "fgsdjkjé"
}
]
}
}
IPMP_ToolParamCapabilitiesResponse {
capabilitiesSupported FALSE
}
IPMP_ConnectTool {
toolDescriptor IPMP_Descriptor {
IPMP_DescriptorID 0xff
IPMPS_Type 0xffff
IPMP_DescriptorIDEx 71
IPMP_ToolID 122
controlPointCode 0x01
sequenceCode 0x00
}
}
IPMP_DisconnectTool {
IPMP_ToolContextID 325
}
IPMP_GetToolContext {
scope 2
IPMP_DescriptorIDEx 127
}
IPMP_GetToolContextResponse {
OD_ID 10
ESD_ID 5
IPMP_ToolContextID 325
}
#eventType is a comma-separated list - this should not be needed for authoring, this msg is typically sent by loaded tools (runtime only)
IPMP_AddToolNotificationListener {
eventType "0,1,2"
scope 2
}
#eventType is a comma-separated list - this should not be needed for authoring, this msg is typically sent by loaded tools (runtime only)
IPMP_RemoveToolNotificationListener {
eventType "0,1,2"
}
IPMP_NotifyToolEvent {
OD_ID 10
ESD_ID 5
IPMP_ToolContextID 325
eventType 2
}
IPMP_CanProcess {
canProcess TRUE
}
IPMP_RightsData {
rightsInfo "rightsdataarray"
}
IPMP_OpaqueData {
opaqueData "opaquedataarray"
}
IPMP_ToolAPI_Config {
Instantiation_API_ID 10
Messaging_API_ID 20
opaqueData "APIopaquedata"
}
IPMP_AudioWatermarkingInit {
inputFormat 0x01
requiredOp 2
nChannels 2
bitPerSample 16
frequency 44100
wmPayload "gduhxwksjkeochxb"
}
IPMP_SendAudioWatermark {
wm_status 0x01
compression_status 2
payload "gduhxwksjkeochxb"
opaqueData "op_wm"
}
IPMP_SelectiveDecryptionInit {
mediaTypeExtension 0
mediaTypeIndication 0x40
profileLevelIndication 0xF
compliance 1
SelectiveBuffers [
IPMP_SelectiveBuffer {
cipher_id 1233546
mode 123
blockSize 32
keySize 32
}
IPMP_SelectiveBuffer {
cipher_id 1233555
StreamCipher "jqsyjnxsq,hdkq"
}
]
SelectiveFields[
IPMP_SelectiveField {
field_id 12
field_scope 3
buf 1
#mappingTable is a comma-separated list of u16 integers
mappingTable "1,2,1,3,4,5"
shuffleSpecificInfo "shuffle_BA"
}
]
}
]
}
]