From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Antonio Rojas <arojas@archlinux.org>
Date: Sat, 7 Jan 2023 16:18:03 +0100
Subject: [PATCH] Support zxing-c++ 2.0

format is a C++ string in 2.0
---
 subprojects/gst-plugins-bad/ext/zxing/gstzxing.cpp | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/subprojects/gst-plugins-bad/ext/zxing/gstzxing.cpp b/subprojects/gst-plugins-bad/ext/zxing/gstzxing.cpp
index 7836dbbcf18e..a8a0f7b49aa4 100644
--- a/subprojects/gst-plugins-bad/ext/zxing/gstzxing.cpp
+++ b/subprojects/gst-plugins-bad/ext/zxing/gstzxing.cpp
@@ -62,6 +62,7 @@
 
 #include "ReadBarcode.h"
 #include "TextUtfEncoding.h"
+#include "ZXVersion.h"
 
 using namespace ZXing;
 
@@ -369,32 +370,40 @@ gst_zxing_transform_frame_ip (GstVideoFilter * vfilter, GstVideoFrame * frame)
   if (result.isValid ()) {
     GST_DEBUG_OBJECT (zxing, "Symbol found. Text: %s Format: %s",
         result.text ().c_str (),
+#if ZXING_VERSION_MAJOR >= 2
+        ToString (result.format ()).c_str ());
+#else
         ToString (result.format ()));
+#endif
   } else {
     goto out;
   }
 
   /* extract results */
   if (zxing->message) {
     GstMessage *m;
     GstStructure *s;
     GstSample *sample;
     GstCaps *sample_caps;
     GstClockTime timestamp, running_time, stream_time;
 
     timestamp = GST_BUFFER_TIMESTAMP (frame->buffer);
     running_time =
         gst_segment_to_running_time (&GST_BASE_TRANSFORM (zxing)->segment,
         GST_FORMAT_TIME, timestamp);
     stream_time =
         gst_segment_to_stream_time (&GST_BASE_TRANSFORM (zxing)->segment,
         GST_FORMAT_TIME, timestamp);
 
     s = gst_structure_new ("barcode",
         "timestamp", G_TYPE_UINT64, timestamp,
         "stream-time", G_TYPE_UINT64, stream_time,
         "running-time", G_TYPE_UINT64, running_time,
+#if ZXING_VERSION_MAJOR >= 2
+        "type", G_TYPE_STRING, ToString (result.format ()).c_str (),
+#else
         "type", G_TYPE_STRING, ToString (result.format ()),
+#endif
         "symbol", G_TYPE_STRING,
         result.text ().c_str (), NULL);
 
