osx version
#1
is possible to compile last version 2019 for osx ?
Thanks
Reply
#2
In theory: Yes. (main pain would be to compile all the dependencies)
in praxis: No, since I don't own a Mac anymore.
-> No Sad
Tried to get Mac OS X running in a VM but that failed too.

Cu Selur
Reply
#3
(03.03.2019, 16:45)Selur Wrote: In theory: Yes. (main pain would be to compile all the dependencies)
in praxis: No, since I don't own a Mac anymore.
-> No Sad
Tried to get Mac OS X running in a VM but that failed too.

Cu Selur

I would give it a try to compile it myself for OSX, and also explore the possibility to add avs2 codec, is it possible to have the compile script?
Reply
#4
There is no compile script and I don't plan to release the source code for Hybrid itself any time soon. Smile
Compiling Hybrid itself isn't a problem (installing XCode and Qt Framework, running qmake and make and that's it).
The problem is to compile all the tools Hybrid uses.
ffmpeg, mplayer, mencoder with all the dependencies (libbluray, xvid, ...), x264, x265, vpxenc, mplayer,....

Adding support for a new encoder without knowing the code would be a pain. (takes me ~8hrs; without knowing the code base it would probably take ~40hrs)

I thought about adding support for xavs2 a while back:
xavs2[i]: Supported parameters:
xavs2[i]:     Width                : Image width  in pixels
xavs2[i]:     SourceWidth          :   - Same as `Width`
xavs2[i]:     Height               : Image height in pixels
xavs2[i]:     SourceHeight         :   - Same as `Height`
xavs2[i]:     Input                : Input sequence, YUV 4:2:0
xavs2[i]:     InputFile            :   - Same as `Input`
xavs2[i]:     InputHeaderLength    : If the inputfile has a header, state it's length in byte here
xavs2[i]:     FrameRate            : FramerateCode, 1: 24000/1001,2: 24,3: 25(default), 4: 30000/1001,5: 30,6: 50,7: 60000/1001,8: 60
xavs2[i]:     fps                  : Framerate, AVS2 supported value: 23.976(24000/1001), 24.0, 25.0(default), 29.97(30000/1001), 30.0, 50.0, 59.94(60000/1001), 60.0
xavs2[i]:     ChromaFormat         : YUV format, 1=4:2:0 (default, the only supported format for the standard), 0=4:0:0, 2=4:2:2
xavs2[i]:     InputSampleBitDepth  : Sample Bitdepth of input file
xavs2[i]:     Frames               : Number of frames to be coded
xavs2[i]:     FramesToBeEncoded    :   - Same as `Frames`
xavs2[i]:     output               : Output bistream file path
xavs2[i]:     OutputFile           :   - Same as `output`
xavs2[i]:     Recon                : Output reconstruction YUV file path
xavs2[i]:     ReconFile            :   - Same as `Recon`
xavs2[i]:     MaxSizeInBit         : Maximum Coding Unit (CU) Size (4, 5, 6)
xavs2[i]:     MinSizeInBit         : Minimum Coding Unit (CU) Size (3, 4, 5, 6)
xavs2[i]:     ProfileID            : Profile ID (18: MAIN PICTURE profile, 32: MAIN profile, 34: MAIN10 profile)
xavs2[i]:     LevelID              : Level ID   (16: 2.0;  32: 4.0;  34: 4.2;  64: 6.0;  66: 6.2)
xavs2[i]:     SampleBitDepth       : Encoding bit-depth
xavs2[i]:     IntraPeriodMax       : maximum intra-period, one I-frame mush appear in any NumMax of frames
xavs2[i]:     IntraPeriodMin       : minimum intra-period, only one I-frame can appear in at most NumMin of frames
xavs2[i]:     OpenGOP              : Open GOP or Closed GOP, 1: Open(default), 0: Closed
xavs2[i]:     UseHadamard          : Hadamard transform (0=not used, 1=used)
xavs2[i]:     FME                  : Motion Estimation method: 0-Full Search, 1-DIA, 2-HEX, 3-UMH (default), 4-TZ
xavs2[i]:     SearchRange          : Max search range
xavs2[i]:     NumberReferenceFrames : Number of previous frames used for inter motion search (1-5)
xavs2[i]:     TemporalIdExistFlag  : temporal ID
xavs2[i]:     FFRAMEEnable         : Use F Frame or not (0: Don't use F frames  1:Use F frames instead of P frames)
xavs2[i]:     DHPEnable            : (0: Don't use DHP,      1:Use DHP)
xavs2[i]:     MHPSKIPEnable        : (0: Don't use MH_PSKIP, 1:Use MH_PSKIP)
xavs2[i]:     WSMEnable            : (0: Don't use WSM,      1:Use WSM)
xavs2[i]:     NumberBFrames        : Number of B frames inserted between I/P/F frames (0=not used)
xavs2[i]:     Inter2PU             : inter partition mode 2NxN or Nx2N or AMP
xavs2[i]:     InterAMP             : inter partition mode AMP
xavs2[i]:     IntraInInter         : intra partition in inter frame
xavs2[i]:     RdoLevel             : RD-optimized mode decision (0:off, 1: only for best partition mode of one CU, 2: only for best 2 partition modes; 3: All partition modes)
xavs2[i]:     LoopFilterDisable    : Disable loop filter in picture header (0=Filter, 1=No Filter)
xavs2[i]:     LoopFilterParameter  : Send loop filter parameter (0= No parameter, 1= Send Parameter)
xavs2[i]:     LoopFilterAlphaOffset : Aplha offset in loop filter
xavs2[i]:     LoopFilterBetaOffset : Beta offset in loop filter
xavs2[i]:     SAOEnable            : Enable SAO or not (1: on, 0: off)
xavs2[i]:     ALFEnable            : Enable ALF or not (1: on, 0: off)
xavs2[i]:     ALFLowLatencyEncodingEnable : Enable Low Latency ALF (1=Low Latency mode, 0=High Efficiency mode)
xavs2[i]:     CrossSliceLoopFilter : Enable Cross Slice Boundary Filter (0=Disable, 1=Enable)
xavs2[i]:     WQEnable             : Weighted quantization
xavs2[i]:     RdoqLevel            : Rdoq Level (0: off, 1: cu level, only for best partition mode, 2: all mode)
xavs2[i]:     LambdaFactor         : default: 75,  Rdoq Lambda factor
xavs2[i]:     LambdaFactorP        : default: 120, Rdoq Lambda factor P/F frame
xavs2[i]:     LambdaFactorB        : default: 100, Rdoq Lambda factor B frame
xavs2[i]:     PMVREnable           : PMVR
xavs2[i]:     NSQT                 : NSQT
xavs2[i]:     SDIP                 : SDIP
xavs2[i]:     SECTEnable           : Secondary Transform
xavs2[i]:     TDRDOEnable          : TDRDO, only for LDP configuration (without B frames)
xavs2[i]:     RefineQP             : Refined QP, only for RA configuration (with B frames)
xavs2[i]:     RateControl          : 0: CQP, 1: CBR (frame level), 2: CBR (SCU level), 3: VBR
xavs2[i]:     TargetBitRate        : target bitrate, in bps
xavs2[i]:     QP                   : initial qp for first frame (8bit: 0~63; 10bit: 0~79)
xavs2[i]:     InitialQP            :   - Same as `QP`
xavs2[i]:     QPIFrame             :   - Same as `QP`
xavs2[i]:     MinQP                : min qp (8bit: 0~63; 10bit: 0~79)
xavs2[i]:     MaxQP                : max qp (8bit: 0~63; 10bit: 0~79)
xavs2[i]:     GopSize              : sub GOP size (negative numbers indicating an employ of default settings, which will invliadate the following settings.)
xavs2[i]:     PresetLevel          : preset level for tradeoff between speed and performance, ordered from fastest to slowest (0, ..., 9), default: 5
xavs2[i]:     Preset               :   - Same as `PresetLevel`
xavs2[i]:     SliceNum             : Number of slices for each frame
xavs2[i]:     NumParallelGop       : number of parallel GOPs (0,1: no GOP parallelization)
xavs2[i]:     ThreadFrames         : number of parallel threads for frames ( 0: auto )
xavs2[i]:     ThreadRows           : number of parallel threads for rows   ( 0: auto )
xavs2[i]:     EnableAecThread      : Enable AEC thread or not (default: enabled)
xavs2[i]:     LogLevel             : log level: -1: none, 0: error, 1: warning, 2: info, 3: debug
xavs2[i]:     Log                  :   - Same as `LogLevel`
xavs2[i]:     EnablePSNR           : Enable PSNR or not (default: Enable)
xavs2[i]:     EnableSSIM           : Enable SSIM or not (default: Disabled)
problem is the encoder doesn't support pipe input, so it needs to be fed with uncompressed video data which needs to lie on a hard drive which makes it totally uninteresting for me.

Cu Selur
Reply
#5
(04.03.2019, 19:09)Selur Wrote: There is no compile script and I don't plan to release the source code for Hybrid itself any time soon. Smile
Compiling Hybrid itself isn't a problem (installing XCode and Qt Framework, running qmake and make and that's it).
The problem is to compile all the tools Hybrid uses.
ffmpeg, mplayer, mencoder with all the dependencies (libbluray, xvid, ...), x264, x265, vpxenc, mplayer,....

Adding support for a new encoder without knowing the code would be a pain. (takes me ~8hrs; without knowing the code base it would probably take ~40hrs)

I thought about adding support for xavs2 a while back:
xavs2[i]: Supported parameters:
xavs2[i]:     Width                : Image width  in pixels
xavs2[i]:     SourceWidth          :   - Same as `Width`
xavs2[i]:     Height               : Image height in pixels
xavs2[i]:     SourceHeight         :   - Same as `Height`
xavs2[i]:     Input                : Input sequence, YUV 4:2:0
xavs2[i]:     InputFile            :   - Same as `Input`
xavs2[i]:     InputHeaderLength    : If the inputfile has a header, state it's length in byte here
xavs2[i]:     FrameRate            : FramerateCode, 1: 24000/1001,2: 24,3: 25(default), 4: 30000/1001,5: 30,6: 50,7: 60000/1001,8: 60
xavs2[i]:     fps                  : Framerate, AVS2 supported value: 23.976(24000/1001), 24.0, 25.0(default), 29.97(30000/1001), 30.0, 50.0, 59.94(60000/1001), 60.0
xavs2[i]:     ChromaFormat         : YUV format, 1=4:2:0 (default, the only supported format for the standard), 0=4:0:0, 2=4:2:2
xavs2[i]:     InputSampleBitDepth  : Sample Bitdepth of input file
xavs2[i]:     Frames               : Number of frames to be coded
xavs2[i]:     FramesToBeEncoded    :   - Same as `Frames`
xavs2[i]:     output               : Output bistream file path
xavs2[i]:     OutputFile           :   - Same as `output`
xavs2[i]:     Recon                : Output reconstruction YUV file path
xavs2[i]:     ReconFile            :   - Same as `Recon`
xavs2[i]:     MaxSizeInBit         : Maximum Coding Unit (CU) Size (4, 5, 6)
xavs2[i]:     MinSizeInBit         : Minimum Coding Unit (CU) Size (3, 4, 5, 6)
xavs2[i]:     ProfileID            : Profile ID (18: MAIN PICTURE profile, 32: MAIN profile, 34: MAIN10 profile)
xavs2[i]:     LevelID              : Level ID   (16: 2.0;  32: 4.0;  34: 4.2;  64: 6.0;  66: 6.2)
xavs2[i]:     SampleBitDepth       : Encoding bit-depth
xavs2[i]:     IntraPeriodMax       : maximum intra-period, one I-frame mush appear in any NumMax of frames
xavs2[i]:     IntraPeriodMin       : minimum intra-period, only one I-frame can appear in at most NumMin of frames
xavs2[i]:     OpenGOP              : Open GOP or Closed GOP, 1: Open(default), 0: Closed
xavs2[i]:     UseHadamard          : Hadamard transform (0=not used, 1=used)
xavs2[i]:     FME                  : Motion Estimation method: 0-Full Search, 1-DIA, 2-HEX, 3-UMH (default), 4-TZ
xavs2[i]:     SearchRange          : Max search range
xavs2[i]:     NumberReferenceFrames : Number of previous frames used for inter motion search (1-5)
xavs2[i]:     TemporalIdExistFlag  : temporal ID
xavs2[i]:     FFRAMEEnable         : Use F Frame or not (0: Don't use F frames  1:Use F frames instead of P frames)
xavs2[i]:     DHPEnable            : (0: Don't use DHP,      1:Use DHP)
xavs2[i]:     MHPSKIPEnable        : (0: Don't use MH_PSKIP, 1:Use MH_PSKIP)
xavs2[i]:     WSMEnable            : (0: Don't use WSM,      1:Use WSM)
xavs2[i]:     NumberBFrames        : Number of B frames inserted between I/P/F frames (0=not used)
xavs2[i]:     Inter2PU             : inter partition mode 2NxN or Nx2N or AMP
xavs2[i]:     InterAMP             : inter partition mode AMP
xavs2[i]:     IntraInInter         : intra partition in inter frame
xavs2[i]:     RdoLevel             : RD-optimized mode decision (0:off, 1: only for best partition mode of one CU, 2: only for best 2 partition modes; 3: All partition modes)
xavs2[i]:     LoopFilterDisable    : Disable loop filter in picture header (0=Filter, 1=No Filter)
xavs2[i]:     LoopFilterParameter  : Send loop filter parameter (0= No parameter, 1= Send Parameter)
xavs2[i]:     LoopFilterAlphaOffset : Aplha offset in loop filter
xavs2[i]:     LoopFilterBetaOffset : Beta offset in loop filter
xavs2[i]:     SAOEnable            : Enable SAO or not (1: on, 0: off)
xavs2[i]:     ALFEnable            : Enable ALF or not (1: on, 0: off)
xavs2[i]:     ALFLowLatencyEncodingEnable : Enable Low Latency ALF (1=Low Latency mode, 0=High Efficiency mode)
xavs2[i]:     CrossSliceLoopFilter : Enable Cross Slice Boundary Filter (0=Disable, 1=Enable)
xavs2[i]:     WQEnable             : Weighted quantization
xavs2[i]:     RdoqLevel            : Rdoq Level (0: off, 1: cu level, only for best partition mode, 2: all mode)
xavs2[i]:     LambdaFactor         : default: 75,  Rdoq Lambda factor
xavs2[i]:     LambdaFactorP        : default: 120, Rdoq Lambda factor P/F frame
xavs2[i]:     LambdaFactorB        : default: 100, Rdoq Lambda factor B frame
xavs2[i]:     PMVREnable           : PMVR
xavs2[i]:     NSQT                 : NSQT
xavs2[i]:     SDIP                 : SDIP
xavs2[i]:     SECTEnable           : Secondary Transform
xavs2[i]:     TDRDOEnable          : TDRDO, only for LDP configuration (without B frames)
xavs2[i]:     RefineQP             : Refined QP, only for RA configuration (with B frames)
xavs2[i]:     RateControl          : 0: CQP, 1: CBR (frame level), 2: CBR (SCU level), 3: VBR
xavs2[i]:     TargetBitRate        : target bitrate, in bps
xavs2[i]:     QP                   : initial qp for first frame (8bit: 0~63; 10bit: 0~79)
xavs2[i]:     InitialQP            :   - Same as `QP`
xavs2[i]:     QPIFrame             :   - Same as `QP`
xavs2[i]:     MinQP                : min qp (8bit: 0~63; 10bit: 0~79)
xavs2[i]:     MaxQP                : max qp (8bit: 0~63; 10bit: 0~79)
xavs2[i]:     GopSize              : sub GOP size (negative numbers indicating an employ of default settings, which will invliadate the following settings.)
xavs2[i]:     PresetLevel          : preset level for tradeoff between speed and performance, ordered from fastest to slowest (0, ..., 9), default: 5
xavs2[i]:     Preset               :   - Same as `PresetLevel`
xavs2[i]:     SliceNum             : Number of slices for each frame
xavs2[i]:     NumParallelGop       : number of parallel GOPs (0,1: no GOP parallelization)
xavs2[i]:     ThreadFrames         : number of parallel threads for frames ( 0: auto )
xavs2[i]:     ThreadRows           : number of parallel threads for rows   ( 0: auto )
xavs2[i]:     EnableAecThread      : Enable AEC thread or not (default: enabled)
xavs2[i]:     LogLevel             : log level: -1: none, 0: error, 1: warning, 2: info, 3: debug
xavs2[i]:     Log                  :   - Same as `LogLevel`
xavs2[i]:     EnablePSNR           : Enable PSNR or not (default: Enable)
xavs2[i]:     EnableSSIM           : Enable SSIM or not (default: Disabled)
problem is the encoder doesn't support pipe input, so it needs to be fed with uncompressed video data which needs to lie on a hard drive which makes it totally uninteresting for me.

Cu Selur

https://github.com/pkuvcl/buildFFmpegAVS2
Reply
#6
You are right, there are ways to compile xavs2 into ffmpeg, totally forgot about that.
Hopefully https://evermeet.cx/ffmpeg/ will add support for it too, since that ffmpeg version already contains the other dependencies Hybrid uses in ffmpeg. Smile
So implementing xavs2 support would probably take me 2 weekends.
1st weekend writing some basic code
2nd weekend testing how exactly the options of xavs2 can be used in ffmpeg (https://www.ffmpeg.org/ffmpeg-codecs.html#Options-28).

Cu Selur
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)