MXF Reader Lib
From AVObjects Knowledge Base
(Difference between revisions)
(17 intermediate revisions by one user not shown) | |||
Line 1: | Line 1: | ||
{{This|av_objects/splitters%26readers/MXFReaderLib.html}} | {{This|av_objects/splitters%26readers/MXFReaderLib.html}} | ||
<!--SORT=1--> | <!--SORT=1--> | ||
− | |||
__NOTOC__ | __NOTOC__ | ||
Line 10: | Line 9: | ||
==Interfaces&Methods== | ==Interfaces&Methods== | ||
+ | |||
Object implements follows methods of [[:Category:IAVObject|IAVObject Interface]] | Object implements follows methods of [[:Category:IAVObject|IAVObject Interface]] | ||
*[[Method Init|Init()]] | *[[Method Init|Init()]] | ||
+ | |||
*[[Method Close|Close()]] | *[[Method Close|Close()]] | ||
+ | |||
*[[Method CanGetFrame|CanGetFrame()]] | *[[Method CanGetFrame|CanGetFrame()]] | ||
+ | |||
*[[Method GetFrame|GetFrame()]] | *[[Method GetFrame|GetFrame()]] | ||
[[:Category:IAVProperties|IAVProperties Interface]] used for sets ang gets values of MXF Reader Lib properties. | [[:Category:IAVProperties|IAVProperties Interface]] used for sets ang gets values of MXF Reader Lib properties. | ||
+ | |||
==Properties== | ==Properties== | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | <table class=prop> | |
− | | BSTR | + | {{AVOProp|format|BSTR|ReadOnly|File format - "MXF"}} |
− | | | + | {{AVOProp|format_name|BSTR|ReadOnly|File format description - "MXF (Material eXchange Format)"}} |
− | | File format | + | {{AVOProp|source|BSTR|ReadWrite|Name of file}} |
− | |- | + | {{AVOProp|streams|array of objects|ReadWrite|Array of media streams for file}} |
− | | | + | {{AVOProp|start_time|LONGLONG|ReadOnly|Start timecode in frames}} |
− | | BSTR | + | {{AVOProp|duration|double|ReadOnly|File duration in second}} |
− | | | + | {{AVOProp|ext_audio|bool|ReadWrite|Enable external audio file,as example for Panasonic P2 }} |
− | | Name of file | + | {{AVOProp|fw_play|bool|ReadWrite|Play direction, ''true'' for forward, ''false'' for backward}} |
− | | | + | {{AVOProp|aes_key|BSTR|ReadWrite|Encription key for DCI files in HEX format XX.XX.XX.XX.XX.XX.XX.XX.XX.XX.XX.XX.XX.XX.XX.XX, dots may be omnited or replaced to any delimiter}} |
− | | | + | {{AVOProp|metadata_xml|BSTR|ReadOnly|String with XML metadata according SMPTE 434-2006}} |
− | | | + | </table> |
− | | | + | |
− | | Start timecode | + | |
− | | | + | |
− | + | ||
− | | double | + | |
− | | | + | |
− | | File duration in second | + | |
− | | | + | |
− | + | ||
− | | bool | + | |
− | | | + | |
− | | Enable external audio file, as example for Panasonic P2 | + | |
− | | | + | |
− | + | ||
− | | bool | + | |
− | | | + | |
− | | Play direction, true for forward, false | + | |
− | | | + | |
− | + | ||
− | | BSTR | + | |
− | | | + | |
− | | Encription key for DCI files in HEX format XX.XX.XX.XX.XX.XX.XX.XX.XX.XX.XX.XX.XX.XX.XX.XX, dots may be omnited or replaced to any delimiter | + | |
− | | | + | |
− | | | + | |
− | | | + | |
− | | | + | |
− | + | ||
− | + | ||
==Samples== | ==Samples== | ||
+ | {{AVO Sample of create and Initialize|MXFReader}} | ||
{{AVO Sample of trace properties}} | {{AVO Sample of trace properties}} | ||
− | + | {{AVO Sample of copy stream}} | |
[[Category:Splitters&Readers]] | [[Category:Splitters&Readers]] |
Latest revision as of 15:23, 11 July 2014
This page is a copy of the original page on the AVObjects' web site and can also be viewed here.
TODO: Description
Overview
TODO: Overview
Interfaces&Methods
Object implements follows methods of IAVObject Interface
IAVProperties Interface used for sets ang gets values of MXF Reader Lib properties.
Properties
format | BSTR | ReadOnly |
File format - "MXF" | ||
format_name | BSTR | ReadOnly |
File format description - "MXF (Material eXchange Format)" | ||
source | BSTR | ReadWrite |
Name of file | ||
streams | array of objects | ReadWrite |
Array of media streams for file | ||
start_time | LONGLONG | ReadOnly |
Start timecode in frames | ||
duration | double | ReadOnly |
File duration in second | ||
ext_audio | bool | ReadWrite |
Enable external audio file,as example for Panasonic P2 | ||
fw_play | bool | ReadWrite |
Play direction, true for forward, false for backward | ||
aes_key | BSTR | ReadWrite |
Encription key for DCI files in HEX format XX.XX.XX.XX.XX.XX.XX.XX.XX.XX.XX.XX.XX.XX.XX.XX, dots may be omnited or replaced to any delimiter | ||
metadata_xml | BSTR | ReadOnly |
String with XML metadata according SMPTE 434-2006 |
Samples
Create and Initialize
//--------------------------------- // Create {{{1}}} object CComPtr<IAVObject>; spReader; HRESULT hr = Create_{{{1}}}(&spReader); if (hr != S_OK) return hr; //--------------------------------- // Query IAVProperties interface CComQIPtr<IAVProperties> spProps(spReader); ATLASSERT(spProps != NULL); //--------------------------------- // Set filename hr = spProps->PropsSet(L"source", L"filename.ext"); if(hr != S_OK) return hr; //--------------------------------- // Init Object hr = spReader->Init(); if(hr != S_OK) return hr;
Trace all object's properties
//Query IAVProperties interface CComQIPtr<IAVProperties> spProps(spObject); //Get list name=value pairs separated CR //for all properties of object CComBSTR cbsPropsList; HRESULT hr = spProps->PropsGet(L"\n", cbsPropsList); ATLASSERT(hr == S_OK); //Trace properties ATLTRACE2(atlTraceGeneral, 2, L"Qbject's properties:\n%s\n", spPropsList);
Copy stream
//BYTE* pbBuffer - pointer to frame buffer //DWORD cbBuffer - size of frane buffer in bytes //int nStream - index of stream HRESULT hr = S_OK; while(1) { hr = spDest->CanPutFrame(nStream, INFINITE); if ( hr != S_OK ) return hr; hr = spSource->CanGetFrame(nStream, INFINITE); if (hr != S_OK) return hr; DWORD cbActual = 0; REFERENCE_TIME tS = 0, tE = 0; DWORD dwFlags = 0; hr = spSource->GetFrame(nStream, pbBuffer, cbBuffer, &cbActual, &dwFlags, &tS, &tE, NULL); if (hr == S_OK) { hr = spDest->PutFrame(nStream, m_pbBuffer, cbActual, dwFlags, tS, tE, NULL); } else if (hr == HRESULT_FROM_WIN32(ERROR_HANDLE_EOF)) { // EOS, put empty frame to dest hr = spDest->PutFrame(nStream, NULL, 0, 0, 0, 0, NULL); if (hr == S_OK) return hr; } if (FAILED(hr)) return hr; }