MPEGGroup / FileFormatConformance

MPEG File Format Conformance Framework
https://mpeggroup.github.io/FileFormatConformance/
BSD 3-Clause Clear License
10 stars 3 forks source link

What is Restricted system 4CC `ress`? #64

Closed podborski closed 12 months ago

podborski commented 1 year ago

https://github.com/MPEGGroup/FileFormatConformance/blob/2aefa1e1a865bea24c235c7a265da61db68a5c00/data/standard_features/14496-12/boxes.json#L1134C24-L1134C24

@cconcolato do you know what this is? @DenizUgur not so sure where it came from, do you remember?

DenizUgur commented 1 year ago

That was something we left for future Dimitri and Deniz to handle. AFAIK, specification was either not correct or had missing information

DenizUgur commented 1 year ago

ress , encs, rest, and resu were the problematic ones

podborski commented 1 year ago

Found this table in the 8th edition draft of ISOBMFF:

<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">

Stream (Track) Type Sample-Entry Code SampleEntry Class
Video resv VisualSampleEntry
Audio resa AudioSampleEntry or AudioSampleEntryV1
Metadata resm MetaDataSampleEntry
Text rest SimpleTextSampleEntry
Subtitle resu XMLSubtitleSampleEntry
Systema ress  
Font resf FontSampleEntry
Haptics resp HapticSampleEntry
Volumetric visual res3 VolumetricVisualSampleEntry

The sample entry type for ress is not provided and I have no idea what it should be. Perhaps just a simple SampleEntry?

DenizUgur commented 1 year ago

Let me also transfer our findings from that time here:

rest: Syntax from ISOBMFF Table 8 seems to refer to wrong SampleEntry class. It should be PlainTextSampleEntry resu: Probably it should be SubtitleSampleEntry ress: Not clear encs: See rest

podborski commented 1 year ago

Ah, it points to Part 14

aligned(8) class ESDBox 
    extends FullBox('esds', version = 0, 0) {
    ES_Descriptor   ES;
}
    // Visual Streams

class MP4VisualSampleEntry() extends VisualSampleEntry ('mp4v'){
    ESDBox  ES;
}
    // Audio Streams

class MP4AudioSampleEntry() extends AudioSampleEntry ('mp4a'){
    ESDBox ES;
}
    // all other Mpeg stream types
class MpegSampleEntry() extends SampleEntry ('mp4s'){
  ESDBox ES;
}

So I guess we can define ress having 3 types as shown above.

DenizUgur commented 1 year ago

That's fine, we just need to create new entries then

podborski commented 1 year ago

rest: Syntax from ISOBMFF Table 8 seems to refer to wrong SampleEntry class. It should be PlainTextSampleEntry resu: Probably it should be SubtitleSampleEntry

I believe the question here is if it should be more generic. I'm not sure. I kind of suspect it should.

For example, There are 2 classes that derive from SubtitleSampleEntry

but only XMLSubtitleSampleEntry is allowed to be encrypted / restricted? This was the reason why I thought it should be the base class.

encs: See rest

It is similar to ress