mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-02 12:32:29 +00:00
Work around AJA SDK not recogizing CEA708 packets when capturing TALL frames in SD modes
Stop using CountAncillaryDataWithType(AJAAncillaryDataType_Cea708) etc because for SD it doesn't recognize the packets. It assumes they would only be received on AJAAncillaryDataChannel_Y but for SD it is actually AJAAncillaryDataChannel_Both.
This commit is contained in:
parent
e70dcfa588
commit
6deeb2389e
1 changed files with 15 additions and 7 deletions
|
@ -1105,15 +1105,23 @@ static GstFlowReturn gst_aja_src_create(GstPushSrc *psrc, GstBuffer **buffer) {
|
||||||
gst_clear_buffer(&item.anc_buffer);
|
gst_clear_buffer(&item.anc_buffer);
|
||||||
gst_clear_buffer(&item.anc_buffer2);
|
gst_clear_buffer(&item.anc_buffer2);
|
||||||
|
|
||||||
if (anc_packets.CountAncillaryDataWithType(AJAAncillaryDataType_Cea708)) {
|
// Not using CountAncillaryDataWithType(AJAAncillaryDataType_Cea708) etc
|
||||||
AJAAncillaryData packet =
|
// here because for SD it doesn't recognize the packets. It assumes they
|
||||||
anc_packets.GetAncillaryDataWithType(AJAAncillaryDataType_Cea708);
|
// would only be received on AJAAncillaryDataChannel_Y but for SD it is
|
||||||
|
// actually AJAAncillaryDataChannel_Both.
|
||||||
|
//
|
||||||
|
// See AJA SDK support ticket #4844.
|
||||||
|
guint32 n_vanc_packets = anc_packets.CountAncillaryData();
|
||||||
|
for (guint32 i = 0; i < n_vanc_packets; i++) {
|
||||||
|
AJAAncillaryData *packet = anc_packets.GetAncillaryDataAtIndex(i);
|
||||||
|
|
||||||
if (packet.GetPayloadData() && packet.GetPayloadByteCount() &&
|
if (packet->GetDID() == AJAAncillaryData_CEA708_DID &&
|
||||||
AJA_SUCCESS(packet.ParsePayloadData())) {
|
packet->GetSID() == AJAAncillaryData_CEA708_SID &&
|
||||||
|
packet->GetPayloadData() && packet->GetPayloadByteCount() &&
|
||||||
|
AJA_SUCCESS(packet->ParsePayloadData())) {
|
||||||
gst_buffer_add_video_caption_meta(
|
gst_buffer_add_video_caption_meta(
|
||||||
*buffer, GST_VIDEO_CAPTION_TYPE_CEA708_CDP, packet.GetPayloadData(),
|
*buffer, GST_VIDEO_CAPTION_TYPE_CEA708_CDP, packet->GetPayloadData(),
|
||||||
packet.GetPayloadByteCount());
|
packet->GetPayloadByteCount());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue