LSMASHSource/LSMASHVideoSource
From Avisynth wiki
(Difference between revisions)
m (category) |
m (minor formatting) |
||
Line 1: | Line 1: | ||
− | + | {{FilterCat|External_filters|Plugin_functions|Source_filters}} | |
− | + | ||
'''Back to [[LSMASHSource]] ←''' | '''Back to [[LSMASHSource]] ←''' | ||
----------------------------------------------- | ----------------------------------------------- | ||
− | |||
<br> | <br> | ||
== Description == | == Description == | ||
− | + | This function uses [http://en.wikipedia.org/wiki/Libav#Video_codecs libavcodec] as a video decoder and [http://github.com/l-smash/l-smash L-SMASH] as a demuxer. Recommended for MP4, MOV, [http://en.wikipedia.org/wiki/ISO_base_media_file_format ISO Base Media] and its derived file formats.<br> | |
− | + | One advantage of LSMASHVideoSource is that it doesn't need to create an index file for its supported formats. | |
+ | <br> | ||
<br> | <br> | ||
− | |||
== [[Script variables|Syntax and Parameters]] == | == [[Script variables|Syntax and Parameters]] == | ||
:{{Template:FuncDef|LSMASHVideoSource (string source, int "track", int "threads", int "seek_mode", int "seek_threshold", bool "dr", bool "stacked", string "format")}} | :{{Template:FuncDef|LSMASHVideoSource (string source, int "track", int "threads", int "seek_mode", int "seek_threshold", bool "dr", bool "stacked", string "format")}} | ||
Line 152: | Line 150: | ||
LSMASHVideoSource(source="source.mp4", track=0, threads=0, seek_mode=0, | LSMASHVideoSource(source="source.mp4", track=0, threads=0, seek_mode=0, | ||
\ seek_threshold=10, dr=false, stacked=false, format="") | \ seek_threshold=10, dr=false, stacked=false, format="") | ||
− | |||
<br> | <br> | ||
<br> | <br> | ||
----------------------------------------------- | ----------------------------------------------- | ||
'''Back to [[LSMASHSource]] ←''' | '''Back to [[LSMASHSource]] ←''' |
Revision as of 10:14, 21 September 2014
Back to LSMASHSource ←
Description
This function uses libavcodec as a video decoder and L-SMASH as a demuxer. Recommended for MP4, MOV, ISO Base Media and its derived file formats.
One advantage of LSMASHVideoSource is that it doesn't need to create an index file for its supported formats.
Syntax and Parameters
- LSMASHVideoSource (string source, int "track", int "threads", int "seek_mode", int "seek_threshold", bool "dr", 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 track = 0
- The track number to open in the source file.
- The value 0 means trying to get the first detected video stream.
- int track = 0
- 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
- 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 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 "Y8" Y8 / Grayscale "YUY2" YUY2 / 4:2:2 interleaved "RGB24" RGB24 / 4:4:4 interleaved "RGB32" RGB32 / 4: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
LSMASHVideoSource with default settings:
LSMASHVideoSource(source="source.mp4", track=0, threads=0, seek_mode=0, \ seek_threshold=10, dr=false, stacked=false, format="")
Back to LSMASHSource ←