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

Video Encode API: BFrames not supported on RX 4xx? #8

Closed
Xaymar opened this issue Aug 20, 2016 · 24 comments
Closed

Video Encode API: BFrames not supported on RX 4xx? #8

Xaymar opened this issue Aug 20, 2016 · 24 comments

Comments

@Xaymar
Copy link
Contributor

Xaymar commented Aug 20, 2016

10:41:06.215: [AMF Encoder]  Type | Acc.Type | Max Bitrate | Stream # | Max Profile | Max Level | BFrames | Ref. Frames | Layer # | FSM | Instance #   
10:41:06.215: [AMF Encoder]   AVC | Hardware |   100000000 |       16 |         100 |        52 |      No |    1 -   16 |       1 |  No |          1  
10:41:06.215: [AMF Encoder]   SVC | Hardware |   100000000 |       16 |         100 |        51 |      No |    1 -   16 |       3 |  No |          1 

I get this result when querying the AMF Encoder for capabilities. The RX 480 has a newer VCE (sub-)generation, shouldn't it support BFrames like the R9 380/R9 285?
This is the output when I select the R9 285 (using the older SDK).

10:41:06.215: [AMF Encoder]  Type | Acc.Type | Max Bitrate | Stream # | Max Profile | Max Level | BFrames | Ref. Frames | Layer # | FSM | Instance # 
10:41:06.215: [AMF Encoder]   AVC | Hardware |  1000000000 |       16 |         100 |        51 |     Yes |    1 -   16 |       1 |  No |          1 
10:41:06.215: [AMF Encoder]   SVC | Hardware |  1000000000 |       16 |         100 |        42 |     Yes |    1 -   16 |       3 |  No |          1 
@MikhailAMD
Copy link
Collaborator

Yes, R9 480 does not support B-frames. You can try new SDK on both HW for consistency.

@kytos22
Copy link

kytos22 commented Aug 20, 2016

I think you meant RX480, if so how is this possible?

@MikhailAMD
Copy link
Collaborator

Yes, HW change.

@Xaymar
Copy link
Contributor Author

Xaymar commented Aug 20, 2016

Does that mean that Vega and Polaris will not support B-Frame encoding, lowering recording quality? That seems like a strange upgrade from VCE 3.0, are you sure it isn't temporarily disabled until the driver side libraries are ready?

@Roph
Copy link

Roph commented Aug 21, 2016

Not totally related, but Polaris definitely supports B-Frames when encoding H.265. Encoding some now.

@Xaymar
Copy link
Contributor Author

Xaymar commented Aug 21, 2016

@Roph Using the AMF SDK or Media Foundation implementation?

@Roph
Copy link

Roph commented Aug 21, 2016

Using a very early development transcoder. I believe the developer used the new SDK.

@kytos22
Copy link

kytos22 commented Aug 22, 2016

@MikhailAMD
Copy link
Collaborator

AMD does not support B-frames for HEVC and H264 on this chip yet.

@Roph
Copy link

Roph commented Aug 23, 2016

Are you sure about that? Using an early test build transcoder I'm able to specify B-frames from 0-3 using HEVC on VCE:

so7tnwb

You can find test transcodes/discussion here: http://forum.videohelp.com/threads/380081-AMD-Polaris-(Radeon-RX-4xx)-H265-Encoding-Samples

I'm not able to check for the presence of actual B-frames in the resulting HEVC video; MediaInfo is the most verbose tool I know of and that doesn't specify.

@Xaymar
Copy link
Contributor Author

Xaymar commented Aug 23, 2016

@Roph: If I read your thread right, you have access to a private repository for the SDK? Does that mean that whatever is currently forcing BFrame support to off is version-specific for the SDK?

I've seen many log files for the RX 4xx series now and the capability reporting always shows BFrames as "Not Supported".

@Roph
Copy link

Roph commented Aug 23, 2016

Not to the SDK, a developer of VCE-enabled video transcoding software put together an untested new build for me using the new SDK with H265 support. He doesn't have a polaris GPU to test on yet.

It definitely works and produces good (for a GPU) quality HEVC, I can't confirm if it's actually using B-Frames though.

@Xaymar
Copy link
Contributor Author

Xaymar commented Aug 23, 2016

But... the SDK doesn't have H265 support yet. Unless he is using the Media Foundation encoder, then it would make sense. (Still impressive speeds for media foundation)

@nwgat
Copy link

nwgat commented Aug 23, 2016

StreamEye can show you if it encodes b-frames or not but it seems not to work on roph's files for some reason even after remux to mkv

@MikhailAMD
Copy link
Collaborator

They probably used HEVC encoder MFT. HEVC Encoder AMF was not published yet. But the MFT is built on AMF :)

@Xaymar
Copy link
Contributor Author

Xaymar commented Aug 23, 2016

@Tukan40 HEVC Encoder is already in the driver side, all it took me to use it was to create the correct component.

@MikhailAMD
Copy link
Collaborator

Keep in mind that there is no B-frames there. It is a bug in app or MFT reports wrong capabilities.

@Xaymar
Copy link
Contributor Author

Xaymar commented Aug 23, 2016

Well, I stepped further into the encoder sent by @Roph to me and it indeed seems to be MFT. I have not found a single reference to amfrt32.dll or amfrt64.dll or any wrappers for the c++ classes. So, yes, it's most likely Windows Media Foundation fucking up again.

@MikhailAMD
Copy link
Collaborator

Yes and no. The MFT is not calling AMF runtime but is built from the same source base. Though, for now one still needs to go through Media Foundation APIs to call it.

@Roph
Copy link

Roph commented Sep 28, 2016

So to clarify @MikhailAMD, is this a software/driver issue or a hardware one? You said AMD doesn't support B-frames on this chip yet, which seems to imply the former. Earlier though you say the chip itself doesn't support them. A little confused.

@MikhailAMD
Copy link
Collaborator

Consulted with HW team: we do not have H264 B-frame encode support in RX480 GPU.

@Xaymar
Copy link
Contributor Author

Xaymar commented Oct 3, 2016

I guess that was to be expected, the RX 460/70/80 is the low to mid-end spectrum anyway. HEVC and Two Pass encoding will help a lot for this anyway.

@Xaymar Xaymar closed this as completed Oct 3, 2016
@Brainiarc7
Copy link

Can someone confirm if AMD's VCE on Polaris supports weighted prediction encoding for H.264 and H.265?

@MikhailAMD
Copy link
Collaborator

weighted prediction is not supported on Polaris.

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

No branches or pull requests

6 participants