From: Shaun Ren sren@codeweavers.com
--- configure | 14 +++++++------- configure.ac | 2 +- dlls/winegstreamer/wg_parser.c | 16 +++++++++++++++- 3 files changed, 23 insertions(+), 9 deletions(-)
diff --git a/configure b/configure index 0067b7f008c..27d2da51eab 100755 --- a/configure +++ b/configure @@ -2562,10 +2562,10 @@ Some influential environment variables: PULSE_LIBS Linker flags for libpulse, overriding pkg-config GSTREAMER_CFLAGS C compiler flags for gstreamer-1.0 gstreamer-video-1.0 - gstreamer-audio-1.0, overriding pkg-config + gstreamer-audio-1.0 gstreamer-tag-1.0, overriding pkg-config GSTREAMER_LIBS Linker flags for gstreamer-1.0 gstreamer-video-1.0 - gstreamer-audio-1.0, overriding pkg-config + gstreamer-audio-1.0 gstreamer-tag-1.0, overriding pkg-config UDEV_CFLAGS C compiler flags for libudev, overriding pkg-config UDEV_LIBS Linker flags for libudev, overriding pkg-config UNWIND_CFLAGS @@ -16984,7 +16984,7 @@ if ${GSTREAMER_CFLAGS:+false} : then : if test ${PKG_CONFIG+y} then : - GSTREAMER_CFLAGS=`$PKG_CONFIG --cflags gstreamer-1.0 gstreamer-video-1.0 gstreamer-audio-1.0 2>conftest.err` + GSTREAMER_CFLAGS=`$PKG_CONFIG --cflags gstreamer-1.0 gstreamer-video-1.0 gstreamer-audio-1.0 gstreamer-tag-1.0 2>conftest.err` fi fi
@@ -16992,15 +16992,15 @@ if ${GSTREAMER_LIBS:+false} : then : if test ${PKG_CONFIG+y} then : - GSTREAMER_LIBS=`$PKG_CONFIG --libs gstreamer-1.0 gstreamer-video-1.0 gstreamer-audio-1.0 2>/dev/null` + GSTREAMER_LIBS=`$PKG_CONFIG --libs gstreamer-1.0 gstreamer-video-1.0 gstreamer-audio-1.0 gstreamer-tag-1.0 2>/dev/null` fi fi
-printf "%s\n" "$as_me:${as_lineno-$LINENO}: gstreamer-1.0 gstreamer-video-1.0 gstreamer-audio-1.0 cflags: $GSTREAMER_CFLAGS" >&5 -printf "%s\n" "$as_me:${as_lineno-$LINENO}: gstreamer-1.0 gstreamer-video-1.0 gstreamer-audio-1.0 libs: $GSTREAMER_LIBS" >&5 +printf "%s\n" "$as_me:${as_lineno-$LINENO}: gstreamer-1.0 gstreamer-video-1.0 gstreamer-audio-1.0 gstreamer-tag-1.0 cflags: $GSTREAMER_CFLAGS" >&5 +printf "%s\n" "$as_me:${as_lineno-$LINENO}: gstreamer-1.0 gstreamer-video-1.0 gstreamer-audio-1.0 gstreamer-tag-1.0 libs: $GSTREAMER_LIBS" >&5 if test -s conftest.err; then - printf %s "$as_me:${as_lineno-$LINENO}: gstreamer-1.0 gstreamer-video-1.0 gstreamer-audio-1.0 errors: " >&5 + printf %s "$as_me:${as_lineno-$LINENO}: gstreamer-1.0 gstreamer-video-1.0 gstreamer-audio-1.0 gstreamer-tag-1.0 errors: " >&5 cat conftest.err >&5 fi rm -f conftest.err diff --git a/configure.ac b/configure.ac index d40c6f600af..3d579c1ff43 100644 --- a/configure.ac +++ b/configure.ac @@ -1572,7 +1572,7 @@ WINE_NOTICE_WITH(pulse, [test -z "$PULSE_LIBS"], dnl **** Check for gstreamer **** if test "x$with_gstreamer" != "xno" then - WINE_PACKAGE_FLAGS(GSTREAMER,[gstreamer-1.0 gstreamer-video-1.0 gstreamer-audio-1.0],,,, + WINE_PACKAGE_FLAGS(GSTREAMER,[gstreamer-1.0 gstreamer-video-1.0 gstreamer-audio-1.0 gstreamer-tag-1.0],,,, [AC_CHECK_HEADER([gst/gst.h], [AC_MSG_CHECKING([whether gint64 defined by gst/gst.h is indeed 64-bit]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <gst/gst.h>]], diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c index 281013162aa..7dd1a495f55 100644 --- a/dlls/winegstreamer/wg_parser.c +++ b/dlls/winegstreamer/wg_parser.c @@ -33,6 +33,7 @@ #include <gst/gst.h> #include <gst/video/video.h> #include <gst/audio/audio.h> +#include <gst/tag/tag.h>
#include "ntstatus.h" #define WIN32_NO_STATUS @@ -1326,7 +1327,20 @@ static void query_tags(struct wg_parser_stream *stream)
if (!stream->tags[WG_PARSER_TAG_LANGUAGE]) { - gst_tag_list_get_string(tag_list, GST_TAG_LANGUAGE_CODE, &stream->tags[WG_PARSER_TAG_LANGUAGE]); + gchar *lang_code = NULL; + + gst_tag_list_get_string(tag_list, GST_TAG_LANGUAGE_CODE, &lang_code); + if (lang_code) + { + /* FIXME: don't convert to ISO 639-1 if the media is ASF. */ + const gchar *lang_code_iso_639_1 = gst_tag_get_language_code_iso_639_1(lang_code); + if (lang_code_iso_639_1) + stream->tags[WG_PARSER_TAG_LANGUAGE] = g_strdup(lang_code_iso_639_1); + else + stream->tags[WG_PARSER_TAG_LANGUAGE] = NULL; + + g_free(lang_code); + } }
gst_event_unref(tag_event);