diff options
Diffstat (limited to 'ext/metadata')
-rw-r--r-- | ext/metadata/README | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/ext/metadata/README b/ext/metadata/README new file mode 100644 index 00000000..7d5c0985 --- /dev/null +++ b/ext/metadata/README @@ -0,0 +1,88 @@ +### design proposal for metadata mux and parser ### + +## use cases ## + +1- Create metadata + +[ App send tag events to the pipeline ] + || /\ + || || + || jpegenc send tag messages like (width, height and compression info) + || || + \/ || ++---------+ +---------+ +-------------+ +----------+ +| v4l2src | -> | jpegenc | -> | metadatamux | -> | filesink | ++---------+ +---------+ +-------------+ +----------+ + +* elements like videoscale should also send (width and height tags) +* should metadatamux get info from caps (width and height) and use if not receive a event with such tags? + + +2- View metadata + ++---------+ +---------------+ +---------+ +-------------+ +| filesrc | -> | metadataparse | -> | jpegdec | -> | xvimagesink | ++---------+ +---------------+ +---------+ +-------------+ + +or + + +--> whole chunk send as event to next element + | ++---------+ +---------------+ +----------+ +| filesrc | -> | metadataparse | -> | fakesink | ++---------+ +---------------+ +----------+ + || + \/ + 1- individual tags send as messages (what about not mapped tags??) + 2- whole chunk send as message (probably the application will ignore this) + +* in any case metadataparse strips out metadata chunks (different from current implementation) + +3- Modify (add, change, delete tags) + + + +--> whole chunk send as event to next element -- ... --+ + | | + | V ++---------+ +---------------+ +-------------+ +----------+ +| filesrc | -> | metadataparse | --------------- ... --------------> | metadatamux | -> | filesink | ++---------+ +---------------+ +-------------+ +----------+ + /\ || + || \/ + || 1- individual tags send as messages (what about not mapped tags??) ==============\\ + || 2- whole chunk send as message (probably the application will ignore this) || + || || +[ App send tag events to the pipeline ] <=======================================================// + +* metadataparse strips out metadata chunks (different from current implementation) +* application receives individual tag messages (what about not mapped ones?) + * the application only send events back to the pipeline for the tags the application wants to modify or keep. + The tags not sent will not be included in metadata chunks +* the metadatamux modify the whole chunk event received before to just keep the individual tags sent by application +* the metadatamux could have a property to say if it should remove or keep tags not sent by application. + +Obs: By looking at the proposed design (1- view and 2- modify) seems that the metadataparse and metadatamux should not know about mapped tags. + Only the application map the tags to/from metadata specific format. This is because, if you notice, only tags sent by application will be keep + on new file. + +4- Convert (for example from jpeg to png) + + +--> whole chunk send as event to next element -- ... --+ + | | + | V ++---------+ +---------------+ +-------------+ +----------+ +| filesrc | -> | metadataparse | -> | jpegdec | -> ... -> | pngenc | -> | metadatamux | -> | filesink | ++---------+ +---------------+ +-------------+ +----------+ + /\ || + || \/ + || 1- individual tags send as messages (what about not mapped tags??) ==============\\ + || 2- whole chunk send as message (probably the application will ignore this) || + || || +[ App send tag events to the pipeline ] <=======================================================// + +* in this case the application set the metadatamux property to always keep the tags by default (application don't not need to send tag events) +* metadatamux needs additional smartness to check what tags still does make sense (some from original jpeg may not make sense anymore) +* if the image is resized, the videoscale should send messages to the application with new width (in the same way pngenc should also) and the + application could send width and height tag events to the pipeline +* should metadatamux get info from caps (width and height) and use if not receive a event with such tags? + |