Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > Video Encoding > New and alternative video codecs

Reply
 
Thread Tools Search this Thread Display Modes
Old 6th July 2023, 11:14   #821  |  Link
birdie
Artem S. Tashkinov
 
birdie's Avatar
 
Join Date: Dec 2006
Posts: 313
Quote:
Originally Posted by ShortKatz View Post
That would be wonderful. At the moment the decoder/encoder is still missing. You can mux a VVC stream from e.g. a MP4 container into a MKV container. But converting the VVC stream into any other format fails. Same for converting any video stream into VVC.
Muxer/demuxer/bitstream parser are already in. Decoder is on its way.

It's quite possible FFmpeg 6.1 will support VVC decoding. 6.2 surely will.

Sadly we have next to zero consumer devices supporting HW VVC decoding aside from two TV set models, that's it. Software VVC decoding is quite taxing though vvdec is not yet fully optimized, hopefully FFMpeg will be.
birdie is offline   Reply With Quote
Old 6th July 2023, 13:44   #822  |  Link
FranceBB
Broadcast Encoder
 
FranceBB's Avatar
 
Join Date: Nov 2013
Location: Royal Borough of Kensington & Chelsea, UK
Posts: 2,738
Quote:
Originally Posted by birdie View Post
Muxer/demuxer/bitstream parser are already in. Decoder is on its way.

It's quite possible FFmpeg 6.1 will support VVC decoding. 6.2 surely will.
Nice.
Hopefully by the end of the years the x266 guys will be ready too with a public release and everything will come together.

So... if everything goes well, in 2024 we might finally begin to see the adoption of H.266, which is a good thing 'cause as soon as people are gonna start putting contents out there, manufacturers will jump in, I'm sure.
FranceBB is offline   Reply With Quote
Old 6th July 2023, 17:13   #823  |  Link
birdie
Artem S. Tashkinov
 
birdie's Avatar
 
Join Date: Dec 2006
Posts: 313
Oh, I've just found a huge number of VVC test/sample files in case someone is interested.
birdie is offline   Reply With Quote
Old 6th July 2023, 17:34   #824  |  Link
ShortKatz
Registered User
 
Join Date: Aug 2018
Location: Germany
Posts: 104
Quote:
Originally Posted by birdie View Post
Muxer/demuxer/bitstream parser are already in. Decoder is on its way.

It's quite possible FFmpeg 6.1 will support VVC decoding. 6.2 surely will.
This would be nice. If decoding works, then apps that are based on FFmpeg, like HandBrake, will support opening VVC files.



Quote:
Originally Posted by birdie View Post
Sadly we have next to zero consumer devices supporting HW VVC decoding aside from two TV set models, that's it. Software VVC decoding is quite taxing though vvdec is not yet fully optimized, hopefully FFMpeg will be.
I'm pretty sure, if we have VVC software support, hardware support will follow. There is already the MediaTek Pentonic series and the Realtek RTD1319D that supports VVC.
ShortKatz is offline   Reply With Quote
Old 6th July 2023, 17:49   #825  |  Link
benwaggoner
Moderator
 
Join Date: Jan 2006
Location: Portland, OR
Posts: 4,653
Quote:
Originally Posted by ShortKatz View Post
This would be nice. If decoding works, then apps that are based on FFmpeg, like HandBrake, will support opening VVC files.
And getting decoding working is the easiest and most essential aspect of getting the whole ecosystem working. If you can't play back, you can't troubleshoot!


Quote:
I'm pretty sure, if we have VVC software support, hardware support will follow. There is already the MediaTek Pentonic series and the Realtek RTD1319D that supports VVC.
Hardware is coming regardless, but software decoders are very valuable to an ecosystem as well. I've heard from multiple sources that VVC decoders are simpler and require less compute than AV1 decoders, and thus will be faster to get well optimized. That said, getting a good AV1 SW decoder made was a high priority for AOM, and I don't know that anyone is putting equivalent engineering effort into SW VVC decoders at this point.
__________________
Ben Waggoner
Principal Video Specialist, Amazon Prime Video

My Compression Book
benwaggoner is offline   Reply With Quote
Old 6th July 2023, 18:16   #826  |  Link
FranceBB
Broadcast Encoder
 
FranceBB's Avatar
 
Join Date: Nov 2013
Location: Royal Borough of Kensington & Chelsea, UK
Posts: 2,738
Quote:
Originally Posted by ShortKatz View Post
This would be nice. If decoding works, then apps that are based on FFmpeg, like HandBrake, will support opening VVC files.
Yep, once FFMpeg is a done deal with libav, we'll have indexers in Avisynth and VapourSynth, decoders in MPV, VLC and plenty of other players, support in programs like VirtualDub, Avidemux, Xmedia Recode etc etc etc.

I mean, nowadays pretty much everything relies on it (not necessarily on FFMpeg itself, but rather on libavcodec), so if it truly is an internal decoder and not an external one (like VVDec), then I would expect it to be in libav and therefore everything using libav will "automagically" gain support.


Quote:
Originally Posted by benwaggoner View Post
If you can't play back, you can't troubleshoot!
pretty much xD
FranceBB is offline   Reply With Quote
Old 9th July 2023, 12:41   #827  |  Link
vahid
Registered User
 
Join Date: Jul 2023
Posts: 6
Hi. I don't know I should ask my question here or not. However, How do I go about extracting motion vectors from vtm software for VVC and have the value of each motion vector?
For example for GOP: I P P P ... or I P B B B P
vahid is offline   Reply With Quote
Old 9th July 2023, 13:27   #828  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 682
Hi. In libbpg for jvetvvc 19.2 GOP : I P P P ... use:

Code:
    if (s->params.intra_only) {
        add_opt(&argc, argv, "--BitstreamFile=image.vvc");
        add_opt(&argc, argv, "--GOPSize=1");
        add_opt(&argc, argv, "--DecodingRefreshType=1");
        add_opt(&argc, argv, "--IntraPeriod=1");
        add_opt(&argc, argv, "--OnePictureOnlyConstraintFlag=1");
        add_opt(&argc, argv, "--GciPresentFlag=1");
        add_opt(&argc, argv, "--Level=15.5");
        add_opt(&argc, argv, "--Tier=high");

        add_opt(&argc, argv, "--SearchRange=64");
        add_opt(&argc, argv, "--CIIP=0");
        add_opt(&argc, argv, "--AffineAmvr=0");
        add_opt(&argc, argv, "--LMCSUpdateCtrl=1");
        add_opt(&argc, argv, "--LMCSOffset=0");

        add_opt(&argc, argv, "--ISPFast=1");
        add_opt(&argc, argv, "--FastMIP=1");
        add_opt(&argc, argv, "--FastLFNST=1");
        add_opt(&argc, argv, "--FastLocalDualTreeMode=0");

        add_opt(&argc, argv, "--AffineAmvrEncOpt=0");
        add_opt(&argc, argv, "--MmvdDisNum=8");

        add_opt(&argc, argv, "--TemporalSubsampleRatio=8");
    } else {
        add_opt(&argc, argv, "--BitstreamFile=animation.vvc");
        add_opt(&argc, argv, "--GOPSize=1");
        add_opt(&argc, argv, "--DecodingRefreshType=2");
        add_opt(&argc, argv, "--IntraPeriod=-1");
        add_opt(&argc, argv, "--FastSearch=1");
        add_opt(&argc, argv, "--SearchRange=96");
        add_opt(&argc, argv, "--BipredSearchRange=4");

        add_opt(&argc, argv, "--IntraQPOffset=-1");
        add_opt(&argc, argv, "--LambdaFromQpEnable=1");

        add_opt(&argc, argv, "--CIIP=1");
        add_opt(&argc, argv, "--AffineAmvr=0");
        add_opt(&argc, argv, "--LMCSUpdateCtrl=2");
        add_opt(&argc, argv, "--LMCSOffset=1");
        add_opt(&argc, argv, "--AllowDisFracMMVD=1");
        add_opt(&argc, argv, "--ISPFast=0");
        add_opt(&argc, argv, "--FastMIP=0");
        add_opt(&argc, argv, "--FastLocalDualTreeMode=2");
        add_opt(&argc, argv, "--MaxMergeRdCandNumTotal=5");
        add_opt(&argc, argv, "--AffineAmvrEncOpt=0");
        add_opt(&argc, argv, "--MmvdDisNum=6");
        add_opt(&argc, argv, "--ALFAllowPredefinedFilters=1");
        add_opt(&argc, argv, "--ALFStrengthTargetLuma=1.0");
        add_opt(&argc, argv, "--ALFStrengthTargetChroma=1.0");
        add_opt(&argc, argv, "--CCALFStrengthTarget=1.0");
        add_opt(&argc, argv, "--EncDbOpt=1");

        for(i = 0; i < s->frame_count - 1; i++) {
            snprintf(buf, sizeof(buf), "--Frame%d=P 1 4 -6.5 0.2590 0 0 1.0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0", i + 1);
            add_opt(&argc, argv, buf);
        }

        add_opt(&argc, argv, "--DeblockingFilterOffsetInPPS");
        add_opt(&argc, argv, "--DeblockingFilterOffsetInPPS=1");
        add_opt(&argc, argv, "--DeblockingFilterDisable=0");
        add_opt(&argc, argv, "--DeblockingFilterBetaOffset_div2=-2");
        add_opt(&argc, argv, "--DeblockingFilterTcOffset_div2=0");
        add_opt(&argc, argv, "--DeblockingFilterCbBetaOffset_div2=-2");
        add_opt(&argc, argv, "--DeblockingFilterCbTcOffset_div2=0");
        add_opt(&argc, argv, "--DeblockingFilterCrBetaOffset_div2=-2");
        add_opt(&argc, argv, "--DeblockingFilterCrTcOffset_div2=0");

        add_opt(&argc, argv, "--TemporalFilter=0");

        add_opt(&argc, argv, "--RateControl=0");
        add_opt(&argc, argv, "--TargetBitrate=1000000");
        add_opt(&argc, argv, "--KeepHierarchicalBit=2");
        add_opt(&argc, argv, "--LCULevelRateControl=1");
        add_opt(&argc, argv, "--RCLCUSeparateModel=1");
        add_opt(&argc, argv, "--InitialQP=0");
        add_opt(&argc, argv, "--RCForceIntraQP=0");
    }

Last edited by Jamaika; 18th July 2023 at 15:24.
Jamaika is offline   Reply With Quote
Old 10th July 2023, 07:03   #829  |  Link
vahid
Registered User
 
Join Date: Jul 2023
Posts: 6
thanks
Quote:
Originally Posted by Jamaika View Post
Hi. In libbpg for jvetvvc 19.2 GOP : I P P P ... use:

Code:
        add_opt(&argc, argv, "--CabacZeroWordPaddingEnabled=0");
        add_opt(&argc, argv, "--VideoSignalTypePresent=0");
        //add_opt(&argc, argv, "--MaxBytesPerPicDenom=0");
        add_opt(&argc, argv, "--SEIToneMapExposureCompensationValueDenomIdc=0");
        add_opt(&argc, argv, "--SEIChromaResamplingHorizontalFilterType=0");
        add_opt(&argc, argv, "--SEIChromaResamplingVerticalFilterType=0");
        add_opt(&argc, argv, "--SEIKneeFunctionNumKneePointsMinus1=0");
        add_opt(&argc, argv, "--ChromaLocInfoPresent=0");
        add_opt(&argc, argv, "--ConstrainedIntraPred=1");
        add_opt(&argc, argv, "--Profile=main_444_16");
        add_opt(&argc, argv, "--IntraPeriod=250");
        add_opt(&argc, argv, "--DecodingRefreshType=1");
        add_opt(&argc, argv, "--ReWriteParamSetsFlag=1");
        int gop_size = 1;
        snprintf(buf, sizeof(buf), "--GOPSize=%d", gop_size);
        add_opt(&argc, argv, buf);

        for(i = 0; i < gop_size; i++) {
            snprintf(buf, sizeof(buf), "--Frame%d=P 1 3 0 0.4624 0 0 1.0 0 0 0 1 1 -1 0 0 0 0", i + 1);
            add_opt(&argc, argv, buf);
        }
vahid is offline   Reply With Quote
Old 17th July 2023, 09:28   #830  |  Link
CodecWar
Registered User
 
Join Date: May 2023
Posts: 5
Introduction:
In the realm of video coding, two prominent contenders, VVC (Versatile Video Coding) and AV1 (AOMedia Video 1), have been vying for the throne of next-generation video compression. A recent comparative study sheds light on the performance disparities between these codecs, providing valuable insights into their strengths and weaknesses. In this article, we delve into the study's findings, methodology, and implications for video enthusiasts and industry professionals.

Source : https://codecwar.com

Study Highlights:
The study examined 62 diverse video streams and drew several significant conclusions:

VVC Takes the Lead:
On average, the VVC reference codec outperformed AV1, delivering superior video quality. The study indicated that AV1 trailed behind VVC by approximately 7.12% across all analyzed video streams.

Codec Specifications:
The study employed VTM (Versatile Video Coding Test Model) implementation, revision 17.0, with the RA (Random Access) configuration, as the reference VVC codec. Meanwhile, AV1 was evaluated using the libAOM (AOMedia codec library) implementation, revision av1-normative, with the RA configuration.

Methodology:
To facilitate a fair and objective comparison, the study employed a BD-Rate (Bjontegaard Delta Rate) analysis with AOM PCHIP (Piecewise Cubic Hermite Interpolating Polynomial) interpolation. This method allowed for precise measurement and comparison of the PSNR (Peak Signal-to-Noise Ratio): Y metric, widely utilized to gauge video quality.

Implications and Future Prospects:
The findings of this comparative study have several implications for the video coding landscape. While VVC emerged as the stronger performer in the analyzed scenarios, AV1 should not be dismissed outright. The open-source nature of AV1, coupled with ongoing development and refinement efforts, presents the possibility of future improvements, narrowing the performance gap between the two codecs.

Additionally, industry professionals should consider the specific requirements of their use cases. Factors such as available bandwidth, hardware support, and compatibility across devices and platforms must be weighed when selecting a video codec. Both VVC and AV1 have unique features and advantages that make them suitable for different applications.

Conclusion:
The comparative study between VVC and AV1 has shed light on the performance disparities between these codecs. While VVC demonstrated superior video quality in this particular study, the dynamic nature of video coding warrants continuous evaluation and exploration. As technology advances and requirements evolve, the choice of a video codec should be carefully considered based on the specific needs of each scenario.

Research visualization:










FULL REPORT with all the charts (avaliable after registration) :
https://codecwar.com/compare/vvc-vs-av1
CodecWar is offline   Reply With Quote
Old 17th July 2023, 17:28   #831  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 682
I answer. How can you compile with frames IPPPP in jvetvvc?
It's complicated because jvetvvc has lot of features. Each new version of the codec may have changed functions.
JVETVVC has P/B frame limiter to 64. This can be increased by changing the MAX_GOP value.
How to decode such movie? Using jvetvvc decoder in this case only version 21.0.
Does ffvvc decode 444/420/rgb videos? Currently not decoding.

Example below:
del *.png
del *.jpg
ffmpeg_rsvg.exe -y -i "video.mp4" -s 360x180 -frames:v 33 image%%d.png
bpgenc_jvetvvc.exe -v -a -q 0 -b 8 -f 444 -c ycbcr_bt709 -m 9 image%%d.png -o output3.bpg
DecoderApp.exe -b animation.vvc -d 8 --SEIDecodedPictureHash=0 -o animation.yuv
ffplay_vvc.exe animation.vvc

Last edited by Jamaika; 18th July 2023 at 15:23.
Jamaika is offline   Reply With Quote
Old 17th July 2023, 18:15   #832  |  Link
birdie
Artem S. Tashkinov
 
birdie's Avatar
 
Join Date: Dec 2006
Posts: 313
Quote:
Originally Posted by Jamaika View Post
I answer. How cam you compile an IPPPP movie in jvetvvc?
It's complicated because jvetvvc has lot of features and is test codec.
JVETVVC has P/B frame limiter of 64. This can be increased by changing the MAX_GOP value.
How to decode such a movie? Using jvetvvc decoder version 21.0.
The above functions are obsolete because they were for version 14.0
Does ffvvc decode 444/420/rgb videos? Currently not decoding.

Example below:
del *.png
del *.jpg
ffmpeg_rsvg.exe -y -i "video.mp4" -s 360x180 -frames:v 33 image%%d.png
bpgenc_jvetvvc.exe -v -a -q 0 -b 8 -f 444 -c ycbcr_bt709 -m 9 image%%d.png -o output3.bpg
ffplay_vvc.exe animation.vvc

Could you run whatever you had in mind through Deepl or Google Translate? It's really hard to understand what you meant.
birdie is offline   Reply With Quote
Old 17th July 2023, 22:15   #833  |  Link
LigH
German doom9/Gleitz SuMo
 
LigH's Avatar
 
Join Date: Oct 2001
Location: Germany, rural Altmark
Posts: 6,696
New uploads: [Windows][GCC 13.1.0][64 bit]

VTM Encoder/Decoder Version 21.0 d4aa80320

Fraunhofer VVC Encoder ver. 1.9.0-rc2 3fcfd93

Fraunhofer VVC Decoder ver. 2.1.0 5b31cd4
__________________

New German Gleitz board
MediaFire: x264 | x265 | VPx | AOM | Xvid
LigH is offline   Reply With Quote
Old 18th July 2023, 05:18   #834  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 682
Quote:
Originally Posted by birdie View Post
Could you run whatever you had in mind through Deepl or Google Translate? It's really hard to understand what you meant.
There is nothing to understand. Example below with P frame limiter to 1024. I don't have time for that because there are still bugs in libbpg/jvet. This is the general scheme.
Why is it presented so intricately?
Manually typing functions in EncoderApp.exe --FrameX from 1 to 10000 is a bit of a hassle.
There is no way to add only P-frames in vvenc.

https://www.sendspace.com/file/o5c3fd

Last edited by Jamaika; 18th July 2023 at 18:43.
Jamaika is offline   Reply With Quote
Old 18th July 2023, 17:46   #835  |  Link
benwaggoner
Moderator
 
Join Date: Jan 2006
Location: Portland, OR
Posts: 4,653
Quote:
Originally Posted by Jamaika View Post
There is nothing to understand. Example below with P frame limiter to 1024. I don't have time for that because there are still bugs in libbpg/jvet. This is the general scheme.
Why is it presented so intricately?
Manually typing functions in EncoderApp.exe --FrameX from 1 to 10000 is a bit of a hassle.
W vvenc nie ma możliwości dodawania tylko samych klatek P.
There is no way to add only P-frames in vvenc.
Is the goal to have 0 b-frames here? Can't that be set directly?
__________________
Ben Waggoner
Principal Video Specialist, Amazon Prime Video

My Compression Book
benwaggoner is offline   Reply With Quote
Old 18th July 2023, 18:41   #836  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 682
That's how I understood user vahid. For libbpg these frames-P called it as animated video in jvet(HM) HEVC .
I don't know what libheif came up with because he was supposed to add the vvc codec.
Jamaika is offline   Reply With Quote
Old 19th July 2023, 08:54   #837  |  Link
vahid
Registered User
 
Join Date: Jul 2023
Posts: 6
Ok. Thanks. I have two issues with VTM. 1) Can I have every desired GOP? even if it includes multiple P frames, such as I P P P P P? If it is so complicated, a simpler GOP structure like I P B B B P or I P B B .... is appropriate.
2) The main goal is to have the value of motion vectors that encoder send to channel. I want to extract only these values. However, it is important to have the motion vectors for each frame separately, as well as the values of each individual motion vector. Thus if I have motion vectors for a GOP structure such as I P B B B P, it would be very helpful.
vahid is offline   Reply With Quote
Old 19th July 2023, 16:38   #838  |  Link
Jamaika
Registered User
 
Join Date: Jul 2015
Posts: 682
Originally GOP Size must be between 1 and 64. For IPPP... GOP is always 1.
Motion vectors details are set in CTUsize. For jvetvvc this will be a problem. In the given example ctusize is added 32 when standard is 128. Unfortunately codec doesn't have thread support so you wait 20 minutes for FullHD screenshot.
https://www.mainconcept.com/mainconc...d-mpeg-h-audio
https://www.youtube.com/watch?v=mtaC_lQO2-4
I think that in a year MainConcept VCC codecs will be in all paid editors and it will be the easiest way for you to test the movie.
Jamaika is offline   Reply With Quote
Old 22nd July 2023, 09:43   #839  |  Link
vahid
Registered User
 
Join Date: Jul 2023
Posts: 6
Thanks a lot. Howeverو I only want to have value of motion vectors separately for usual GOP. Is it so complicated or is it impossible now?
vahid is offline   Reply With Quote
Old 23rd July 2023, 11:34   #840  |  Link
birdie
Artem S. Tashkinov
 
birdie's Avatar
 
Join Date: Dec 2006
Posts: 313
GStreamer is working on a VVC demuxer/parser/decoder (using vvdec): https://gitlab.freedesktop.org/gstre.../-/issues/2842

And a free MacOS video player with full VVC decoding support has been released: https://www.elmedia-video-player.com/

Things are moving.
birdie is offline   Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 10:46.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2023, vBulletin Solutions Inc.