MultiView 4 HD and H.264 Pro Recorder - Dropping B Frames

Ask software engineering and SDK questions for developers working on Mac OS X, Windows or Linux.
  • Author
  • Message
Offline

BrendanBarrett

  • Posts: 3
  • Joined: Mon May 28, 2018 1:41 pm
  • Real Name: Brendan Barrett

MultiView 4 HD and H.264 Pro Recorder - Dropping B Frames

PostTue May 29, 2018 9:55 am

Hi

We're trying to get the MultiView 4 HD to feed into the H.264 Pro Recorder. The problem is that when we ask the H.264 Pro Recorder to drop B Frames using "em->SetFlag(bmdStreamingEncodingPropertyH264HasBFrames, 0)", then the H.264 Pro Recorder crashes immediately on recording.

We tested this using MXPTiny as well (Customize and uncheck the B Frames box). It crashes as well. The crash happens whether we use the SDI output from the MultiView 4 HD or the HDMI output from the MultiView 4 HD. Any other source into the H.264 Pro Recorder (i.e. HDMI straight from pc, or SDI from TV Broadcast truck) works 100% (while dropping B Frames).

Is there a solution we can try that does not involve having to include support for B Frames into the playback software? It seems like a really strange bug, and we don't have much time to resolve this.
Offline

BrendanBarrett

  • Posts: 3
  • Joined: Mon May 28, 2018 1:41 pm
  • Real Name: Brendan Barrett

Re: MultiView 4 HD and H.264 Pro Recorder - Dropping B Frame

PostThu May 31, 2018 12:46 pm

Guys, thanks for the help (Black Magic devs via email).

If anyone else has this issue with default settings and dropping B Frames:

If you drop B Frames, the bitrate required will shoot up (especially at the Multiview's default of 60fps). In our case, we compensated by setting the fps on the H.264 pro recorder to 30, then also set the profile to BaseLine.

The following settings work well for us.

em->SetFlag(bmdStreamingEncodingPropertyH264HasBFrames, 0)
em->SetInt(bmdStreamingEncodingPropertyH264Profile, bmdStreamingH264ProfileBaseline);
em->SetInt(bmdStreamingEncodingPropertyH264Level, bmdStreamingH264Level42);
em->SetInt(bmdStreamingEncodingPropertyH264EntropyCoding, bmdStreamingH264EntropyCodingCABAC);
em->SetInt(bmdStreamingEncodingPropertyVideoFrameRate, bmdStreamingEncodedFrameRate30p);
em->SetInt(bmdStreamingEncodingPropertyVideoBitRateKbps, 10000);

Return to Software Developers

Who is online

Users browsing this forum: No registered users and 23 guests