-
Notifications
You must be signed in to change notification settings - Fork 78
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Questions for Rust crate #318
Comments
Output of audio from AviSynth+ matches the endianness of the system. This led to issues in FFmpeg because the AviSynth demuxer in FFmpeg used to make a hard assumption of little endian audio, and that caused garbage audio output on the iMac G5 (and would also on newer big endian systems running Linux, BSD, etc.). This was resolved in this commit. The same file on a typical x86 system played correctly.
Yes, but the difference is that for pixel formats, FFmpeg abstracts big endian/little endian formats (example). There is no equivalent abstraction for audio endianness, which is why that needed to be adjusted in the previously-referenced commit.
It depends on how the decoder in the source filter handles it. Most source filters available on non-Windows OSes rely on libavcodec to handle the decoding, so it would be returning the same endianness that FFmpeg would if given the file directly. |
They refer to Avisynth's internal buffer pool. Resizers and other internal filters are using it, they are part of Avisynth final, documented interface since V8. I think early Avisynth+ developers defined these functions to have a quicker way of allocation instead of relying on the actual OS and compiler. For the full history you can check this topic: https://forum.doom9.org/showthread.php?t=168856 (I didn't even know C++ when they started the Avisynth+ project, so sometimes I'm as clueless as you) There is no detailed documentation on this SDK part, I just put them here to have a reference. |
I've never seen a use case for it. Maybe it covered a pre Avisynth+ workaround to the plane alignment problems? This is what I found about them: |
As far as I know the usage of BFF-TFF is already a hybrid one in some recent plugins. Avisynth+ handles frame properties, but specifically the VaporSynth originated _Field and _Fieldbased are still not handled inside. I don't know what to do with them. In Avisynth they are clip properties - through VideoInfo bits. In all other case these variables are supported as frame properties - e.g. plugins and source filters can set it and use it - even overriding the setting which is set 'officially" in Avisynth.#317 (And a task for myself (and @Reel-Deal to push me if I forget about it :) ) : I noticed that I haven't copied the topic Reserved frame property names in http://avisynth.nl/index.php/Internal_functions#Field into our refreshed .rst based doc) |
This is all history. Both IScriptEnvironment2 and NeoEnv. Especially the latter one. They contain internal interface - always left undocumented - stuff which you are expected to never use. |
Used only for internal purposes. Magic. After Avisynth v2.5 developers made it public, but I think at that time there was no IScriptEnvironment2 or NeoEnv for non-stable internal variants of environment interface calls. |
What do you mean by "hybrid usage"?
According to the definition, (The value of If this risks slowing things down, I'd think these frame props shouldn't be made available in principle. Perhaps provide a script function to populate these props, so they are there only when they're needed. But all of this doesn't answer my question how the ambiguity of My Rust crate currently has |
A doc comment in I tried casting My Even if |
Lucky for you, I already added that to the docs some weeks ago :) ... just need to finish other parts of the syntax. |
During the development of my Rust crate that can be used to write AviSynth+ plugins, these questions came up. Please don't hesitate to answer only a subset of questions at a time, if need be. I'll keep commenting out questions that were already answered to keep things clear (ideally, always quote me).
GetFrame()
method returns a null pointerPVideoFrame
? I experienced process crashes when returning a null pointerPVideoFrame
myself. When a filter implementation in a third-party Rust plugin yields a frame with incorrect metrics (width, height, color format), I already block the frame and deliver a frame with an error text message instead. I could also yield such a message frame to a Rust plugin when a third-party C++ plugin yields a null pointerPVideoFrame
, if you don't have a better idea about how to handle this. When I'd do that, I'd like to write a reference to the plugin or plugin function onto the frame, however. For this, I'd need a function to, e.g., get the .avs script function name that's associated with theIClip
. Is that realistic? Are you willing to implement this?VideoInfo
from anIClip
it depends on (i.e., retrieves its audio and frames from), without lifetime issues on filter chain destruction? In other words: Can you rely on your filter being destructed before the filters you depend on?May
VideoInfo::image_type
validly and meaningfully containIT_BFF
orIT_TFF
when theIT_FIELDBASED
bit is0
? For frame-based clips, are theIT_BFF
/IT_TFF
flags read by AviSynth+, or may they validly and meaningfully be read by plugins? If yes, why isGetParity()
documented as working with frame-based clips? Wouldn't that be two sources for the same piece of information? If no, please document inavisynth.h
forVideoInfo::image_type
that, ifIT_FIELDBASED
isn't set, the other bits are ignored.Can the return values from
IClip::GetParity()
be derived fromVideoInfo::image_type
? If not, why?What's the enum defining
CS_MPEG2_CHROMA_PLACEMENT
,CS_YUY2_CHROMA_PLACEMENT
,CS_TOPLEFT_CHROMA_PLACEMENT
etc. about? Is it this? The large comment instruct VideoInfo
says:Other YV12 specific (not used?) C 20-22 Chroma Placement values 0-4 see CS_xxx_CHROMA_PLACEMENT
. So, it's currently always irrelevant? How can it become relevant, because the color format constants must not change, right? Adding anotherVideoInfo
member, as withimage_type
?The text was updated successfully, but these errors were encountered: