flacenc: Fix mapping of GStreamer image tag type to FLAC image tag type
authorSebastian Dröge <sebastian@centricular.com>
Fri, 17 Mar 2023 14:48:51 +0000 (16:48 +0200)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 18 Mar 2023 19:52:40 +0000 (19:52 +0000)
These enums are not compatible so just casting them does not work.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4221>

subprojects/gst-plugins-good/ext/flac/gstflacenc.c

index 1993e7d..ce91231 100644 (file)
@@ -687,7 +687,89 @@ gst_flac_enc_set_metadata (GstFlacEnc * flacenc, GstAudioInfo * info,
       gst_buffer_unmap (buffer, &map);
 
       GST_LOG_OBJECT (flacenc, "Setting picture type %d", image_type);
-      flacenc->meta[entries]->data.picture.type = image_type;
+      switch (image_type) {
+        case GST_TAG_IMAGE_TYPE_NONE:
+          flacenc->meta[entries]->data.picture.type =
+              FLAC__STREAM_METADATA_PICTURE_TYPE_OTHER;
+          break;
+        case GST_TAG_IMAGE_TYPE_FRONT_COVER:
+          flacenc->meta[entries]->data.picture.type =
+              FLAC__STREAM_METADATA_PICTURE_TYPE_FRONT_COVER;
+          break;
+        case GST_TAG_IMAGE_TYPE_BACK_COVER:
+          flacenc->meta[entries]->data.picture.type =
+              FLAC__STREAM_METADATA_PICTURE_TYPE_BACK_COVER;
+          break;
+        case GST_TAG_IMAGE_TYPE_LEAFLET_PAGE:
+          flacenc->meta[entries]->data.picture.type =
+              FLAC__STREAM_METADATA_PICTURE_TYPE_LEAFLET_PAGE;
+          break;
+        case GST_TAG_IMAGE_TYPE_MEDIUM:
+          flacenc->meta[entries]->data.picture.type =
+              FLAC__STREAM_METADATA_PICTURE_TYPE_MEDIA;
+          break;
+        case GST_TAG_IMAGE_TYPE_LEAD_ARTIST:
+          flacenc->meta[entries]->data.picture.type =
+              FLAC__STREAM_METADATA_PICTURE_TYPE_LEAD_ARTIST;
+          break;
+        case GST_TAG_IMAGE_TYPE_ARTIST:
+          flacenc->meta[entries]->data.picture.type =
+              FLAC__STREAM_METADATA_PICTURE_TYPE_ARTIST;
+          break;
+        case GST_TAG_IMAGE_TYPE_CONDUCTOR:
+          flacenc->meta[entries]->data.picture.type =
+              FLAC__STREAM_METADATA_PICTURE_TYPE_CONDUCTOR;
+          break;
+        case GST_TAG_IMAGE_TYPE_BAND_ORCHESTRA:
+          flacenc->meta[entries]->data.picture.type =
+              FLAC__STREAM_METADATA_PICTURE_TYPE_BAND;
+          break;
+        case GST_TAG_IMAGE_TYPE_COMPOSER:
+          flacenc->meta[entries]->data.picture.type =
+              FLAC__STREAM_METADATA_PICTURE_TYPE_COMPOSER;
+          break;
+        case GST_TAG_IMAGE_TYPE_LYRICIST:
+          flacenc->meta[entries]->data.picture.type =
+              FLAC__STREAM_METADATA_PICTURE_TYPE_LYRICIST;
+          break;
+        case GST_TAG_IMAGE_TYPE_RECORDING_LOCATION:
+          flacenc->meta[entries]->data.picture.type =
+              FLAC__STREAM_METADATA_PICTURE_TYPE_RECORDING_LOCATION;
+          break;
+        case GST_TAG_IMAGE_TYPE_DURING_RECORDING:
+          flacenc->meta[entries]->data.picture.type =
+              FLAC__STREAM_METADATA_PICTURE_TYPE_DURING_RECORDING;
+          break;
+        case GST_TAG_IMAGE_TYPE_DURING_PERFORMANCE:
+          flacenc->meta[entries]->data.picture.type =
+              FLAC__STREAM_METADATA_PICTURE_TYPE_DURING_PERFORMANCE;
+          break;
+        case GST_TAG_IMAGE_TYPE_VIDEO_CAPTURE:
+          flacenc->meta[entries]->data.picture.type =
+              FLAC__STREAM_METADATA_PICTURE_TYPE_VIDEO_SCREEN_CAPTURE;
+          break;
+        case GST_TAG_IMAGE_TYPE_FISH:
+          flacenc->meta[entries]->data.picture.type =
+              FLAC__STREAM_METADATA_PICTURE_TYPE_FISH;
+          break;
+        case GST_TAG_IMAGE_TYPE_ILLUSTRATION:
+          flacenc->meta[entries]->data.picture.type =
+              FLAC__STREAM_METADATA_PICTURE_TYPE_ILLUSTRATION;
+          break;
+        case GST_TAG_IMAGE_TYPE_BAND_ARTIST_LOGO:
+          flacenc->meta[entries]->data.picture.type =
+              FLAC__STREAM_METADATA_PICTURE_TYPE_BAND_LOGOTYPE;
+          break;
+        case GST_TAG_IMAGE_TYPE_PUBLISHER_STUDIO_LOGO:
+          flacenc->meta[entries]->data.picture.type =
+              FLAC__STREAM_METADATA_PICTURE_TYPE_PUBLISHER_LOGOTYPE;
+          break;
+        case GST_TAG_IMAGE_TYPE_UNDEFINED:
+        default:
+          flacenc->meta[entries]->data.picture.type =
+              FLAC__STREAM_METADATA_PICTURE_TYPE_UNDEFINED;
+          break;
+      }
 
       if (width > 0 && height > 0) {
         flacenc->meta[entries]->data.picture.width = width;