LSMASHSource/LWLibavVideoSource
From Avisynth wiki
Back to LSMASHSource ←
Description
- This function uses libavcodec as a video decoder and libavformat as a demuxer.
Syntax and Parameters
- LWLibavVideoSource (string source, int "stream_index", int "threads", bool "cache", int "seek_mode", int "seek_threshold", bool "dr", bool "repeat", int "dominance", bool "stacked", string "format")
- string source =
- The path of the source file; path can be omitted if the source file is in the same directory as the AviSynth script (*.avs).
- string source =
- int stream_index = -1
- The stream index to open in the source file. The value -1 means trying to get the video stream which has the largest resolution.
- int stream_index = -1
- int threads = 0
- The number of threads to decode a stream by libavcodec.
- The value 0 means the number of threads is determined automatically and then the maximum value will be up to 16.
- int threads = 0
- bool cache = true
- Create the index file (.lwi) to the same directory as the source file if set to true.
- The index file avoids parsing all frames in the source file at the next or later access.
- Parsing all frames is very important for frame accurate seek.
- bool cache = true
- int seek_mode = 0
- How to process when any error occurs during decoding a video frame.
- 0 : Normal
- This mode retries sequential decoding from the next closest RAP up to 3 cycles when any decoding error occurs.
- If all 3 trial failed, retry sequential decoding from the last RAP by ignoring trivial errors.
- Still error occurs, then return the last returned frame.
- 1 : Unsafe
- This mode retries sequential decoding from the next closest RAP up to 3 cycles when any fatal decoding error occurs.
- If all 3 trial failed, then return the last returned frame.
- 2 : Aggressive
- This mode returns the last returned frame when any fatal decoding error occurs.
- How to process when any error occurs during decoding a video frame.
- int seek_mode = 0
- * RAP is an abbreviation of random accessible point.
- int seek_threshold = 10
- The threshold to decide whether a decoding starts from the closest RAP to get the requested video frame or doesn't.
- Let's say
- the threshold is T,
- and
- you request to seek the M-th frame called f(M) from the N-th frame called f(N).
- If M > N and M - N <= T, then
- the decoder tries to get f(M) by decoding frames from f(N) sequentially.
- If M < N or M - N > T, then
- check the closest RAP at the first.
- After the check, if the closest RAP is identical with the last RAP, do the same as the case M > N and M - N <= T.
- Otherwise, the decoder tries to get f(M) by decoding frames from the frame which is the closest RAP sequentially.
- Let's say
- The threshold to decide whether a decoding starts from the closest RAP to get the requested video frame or doesn't.
- int seek_threshold = 10
- * RAP is an abbreviation of random accessible point.
- bool dr = false
- Try direct rendering from the video decoder if set to true.
- The output resolution will be aligned to be mod16-width and mod32-height by assuming two vertical 16x16 macroblock.
- For H.264 streams, in addition, 2 lines could be added because of the optimized chroma MC.
- bool dr = false
- bool repeat = false
- Reconstruct frames by the flags specified in video stream and then treat all frames as interlaced if set to true and usable.
- bool repeat = false
- int dominance = 0
- Which field, top or bottom, is displayed first.
- 0 : Obey source flags
- 1 : TFF i.e. Top -> Bottom
- 2 : BFF i.e. Bottom -> Top
- This option is enabled only if one or more of the following conditions is true.
- - 'repeat' is set to true.
- - There is a video frame consisting of two separated field coded pictures
- Which field, top or bottom, is displayed first.
- int dominance = 0
- bool stacked = false
- Use the stacked format for a hack of AviSynth high bit-depth support if set to true.
- The stacked format splits MSB and LSB into vertically, and MSB comes on top of output image.
- Note: direct rendering is not available at all if stacked format is used.
- bool stacked = false
- string format = ""
- Force specified output pixel format if 'format' is specified.
- The following formats are available currently.
- string format = ""
Format Comments "YUV420P8" YV12 / 4:2:0 planar "YUV422P8" YV16 / 4:2:2 planar "YUV444P8" YV24 / 4:4:4 planar "YUV410P8" 4:1:0 planar "YUV411P8" YV411 / 4:1:1 planar "YUV420P9" 9-bit 4:2:0 planar "YUV422P9" 9-bit 4:2:2 planar "YUV444P9" 9-bit 4:4:4 planar "YUV420P10" 10-bit 4:2:0 planar "YUV422P10" 10-bit 4:2:2 planar "YUV444P10" 10-bit 4:4:4 planar "YUV420P12" 12-bit 4:2:0 planar - (ffmpeg only) "YUV422P12" 12-bit 4:2:2 planar - (ffmpeg only) "YUV444P12" 12-bit 4:4:4 planar - (ffmpeg only) "YUV420P14" 14-bit 4:2:0 planar - (ffmpeg only) "YUV422P14" 14-bit 4:2:2 planar - (ffmpeg only) "YUV444P14" 14-bit 4:4:4 planar - (ffmpeg only) "YUV420P16" 16-bit 4:2:0 planar "YUV422P16" 16-bit 4:2:2 planar "YUV444P16" 16-bit 4:4:4 planar "YUY2" YUY2 / 4:2:2 interleaved "RGB24" RGB24 / 4:4:4 interleaved *YV12, YV16 and YV24 allow bit depths greater than 8.
- Note: direct rendering is not available at all if pixel format is forced.
Examples
LWLibavVideoSource with default settings:
LWLibavVideoSource(source="source.m2ts", stream_index=-1, threads=0, \ cache=true, seek_mode=0, seek_threshold=10, dr=false, \ repeat=false, dominance=0, stacked=false, format="")
Back to LSMASHSource ←