Comments (5)
The size of the frame should be determined by looking at the position of the next frame in the IndexTable.
@kblinova What about the last frame?
from asdcplib.
The end of the clip element.
from asdcplib.
Couple of further thoughts.
The method uses small read/seek calls that are inefficient and problematic in future cloud deployments. The method should ultimately make one call to read (with possibly no seek if the frames are read sequentially) to ingest the whole frame.
There are two separate issues:
- one seek per frame read. this is primarily due to the function that reads one frame at a time and with random access. Two potential solutions:
a. define a streaming read function that reads continuously after an initial seek
b, keep a memory of the previous frame index to avoid a seek unless needed
- small reads. hopefully the underlying platform does buffering does not read from the socket 4 bytes at a time :) Approach 1.b. would probably solve this. Alternatively the size of each frame could be inferred from the size of the element and index table offset. I am not however sure MXF was designed to work that way. I am tempted to ask on the 31FS reflector.
IAFrame is described in SMPTE ST 2098-2:2019 and can change independently of SMPTE ST 2067-201:2019. There is no need to tie the two together.
ST 2067-201 defines an IA Track File, which, by definition, contains a sequence of IA Frames. Can you clarify what you have in mind.
from asdcplib.
There is no goal to eliminate at least one seek and at least one read per frame. It is required due to the nature of the random access of frames.
What needs to be avoided is having the small reads to get the size of the frame from the IAFrame encoding. When this format is taken to the could, these fread calls would have to be translated to API calls to access the cloud resources so minimizing the number of calls could be a useful strategy.
The index table has all the information that is needed to access the frames, so there is no need to use the fact that the essence is IAFrame in order to decode it. The MXF wrapper should be essence-agnostic and is designed to have all the information to carry any essence without relying on the information about how the content is encoded.
from asdcplib.
The index table has all the information that is needed to access the frames,
However the index table does not contain sufficient information to determine the size of a frame, e.g. does not account for KLV Fill items.
What needs to be avoided is having the small reads to get the size of the frame from the IAFrame encoding.
Doesn't the cloud I/O library buffer reads?
from asdcplib.
Related Issues (20)
- Question: Install trouble... HOT 1
- JP2K Quantization unpacking and QCD data checks HOT 2
- Update RDD 47 Registers XML files to match those in SMPTE Metadata Registers HOT 1
- asdcp-unwrap will write timed-text ancillary resources to "/[UUID]" when file-prefix has no path HOT 2
- AS_02::IAB::MXFReader does not work properly
- IMF_IABEssenceClipWrappedElement UL value is incorrect in written IMF MXF files. HOT 1
- RuntimeError exception should not be used in as_02_IAB.cpp
- OpenRead function in as_02_IAB.cpp should be const HOT 3
- as-02-info, as-02-wrap, and as-02-unwrap should be modified to support new IMF IAB essence type HOT 1
- Separator issue in KM_fileio.cpp and KM_fileio.h on WIndows HOT 1
- Improve handling of parameterizable ULs
- MCA Tag Symbol for 5.1 EX should be "51EX" not "51Ex"
- Arithmetic overflow prevents reading from AS-02 files larger then 4 GB.
- Index table construction does handle KLV Fill Items after the Partition Pack HOT 1
- wrapping ST 428-7 fails when wrapping more than 1516 PNG files HOT 2
- Apple M1 Silicon Big Sur buiding asdcplib fails HOT 2
- Mastering Display Color Volume Metadata is not supported HOT 1
- Photon validation errors HOT 3
- Bitrate per component HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from asdcplib.