Skip to content
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

ffmpeg-encoder/dnxhr: Added Avid DNxHR Encoder based on FFmpeg #784

Merged
merged 1 commit into from
Feb 26, 2022

Conversation

IceStormNG
Copy link

Explain the Pull Request

Added encoder for Avid DNxHR for 8 and 10 bit formats (although OBS doesn't support 10bit - yet).

  • DNxHR LB (8bit)
  • DNxHR SQ (8bit)
  • DNxHR HQ (8bit)
  • DNxHR HQX (10bit)
  • DNxHR 444 (10bit)

This is an alternative to the existing ProRes encoder.

Why is this necessary?

The default DNx encoder, that can be used through OBS' integrated FFmpeg output, cannot do proper 4:2:2 chroma as it is missing pixel format conversions from 4:4:4 to 4:2:0. Therefore, you could only record 4:2:0 as 4:2:2, which is not true 4:2:2, or 4:4:4 as 4:4:4 (DNxHR 444 10bit), which is massive in size and often unnecessary.
OBS has no native 4:2:2 option (yet).

Checklist

  • I will become the maintainer for this part of code.
  • I have tested this code on all supported Platforms.

Copy link
Contributor

@Xaymar Xaymar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Requires a few changes.

CMakeLists.txt Outdated Show resolved Hide resolved
CMakeLists.txt Outdated Show resolved Hide resolved
CMakeLists.txt Outdated Show resolved Hide resolved
data/locale/de-DE.ini Outdated Show resolved Hide resolved
source/encoders/handlers/dnxhd_handler.cpp Outdated Show resolved Hide resolved
source/encoders/codecs/dnxhr.hpp Outdated Show resolved Hide resolved
source/encoders/handlers/dnxhd_handler.cpp Outdated Show resolved Hide resolved
source/encoders/handlers/dnxhd_handler.cpp Outdated Show resolved Hide resolved
source/encoders/handlers/dnxhd_handler.cpp Outdated Show resolved Hide resolved
source/encoders/handlers/dnxhd_handler.cpp Outdated Show resolved Hide resolved
@IceStormNG
Copy link
Author

Alright. I changed the mentioned parts and use string-based profile mapping instead of integer-based.

@IceStormNG
Copy link
Author

The only thing that is still needed is to create a wiki page for the new encoder and change the URL inside the handler accordingly.

data/locale/en-US.ini Outdated Show resolved Hide resolved
Copy link
Contributor

@Xaymar Xaymar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only minor things remaining. Please make sure you've run all the files through clang-format, as otherwise merging will not be possible.

source/encoders/handlers/dnxhd_handler.cpp Outdated Show resolved Hide resolved
source/encoders/handlers/dnxhd_handler.hpp Outdated Show resolved Hide resolved
@IceStormNG
Copy link
Author

I implemented the requested changes. All files have been run through clang-format.

@Xaymar
Copy link
Contributor

Xaymar commented Feb 26, 2022

Merging into v0.12 once checks finish.

@Xaymar Xaymar merged commit bf1787e into Vhonowslend:master Feb 26, 2022
@Xaymar Xaymar added this to the FFmpeg Encoders (Component) milestone Dec 11, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants