<div dir="ltr"><div dir="ltr"><div>GES should do it automatically since <a href="https://gitlab.freedesktop.org/gstreamer/gst-editing-services/commit/77dac21488f2217c9fc0cb7a7bfba1f5c0ef8789">https://gitlab.freedesktop.org/gstreamer/gst-editing-services/commit/77dac21488f2217c9fc0cb7a7bfba1f5c0ef8789</a> can check if that works:<br><br></div><code><code></code></code></div><div>gst-launch-1.0 uridecodebin uri=file://your/file.move ! videoflip ! video-direction=auto ! videoconvert ! autovideosink <br></div><div><br></div><div>Regards,</div><div><br></div><div>Thibault<br></div><div><br></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jun 5, 2019 at 6:30 PM Mathieu Duponchelle <<a href="mailto:mathieu@centricular.com">mathieu@centricular.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div bgcolor="#FFFFFF">
GES itself will not do that, as a standard GES source only uses
uridecodebin. The way image-orientation<br>
works is that the demuxer (qtdemux here) will parse the tag and
forward it downstream. Other elements<br>
such as videoflip can then use it to actually perform the rotation.
See the difference in behaviour between<br>
the following pipelines:<br>
<br>
gst-launch-1.0 uridecodebin
uri=<a class="gmail-m_-2278308263519352046moz-txt-link-freetext">file:///home/meh/Downloads/rotate-180.mov</a> ! xvimagesink<br>
gst-launch-1.0 uridecodebin
uri=<a class="gmail-m_-2278308263519352046moz-txt-link-freetext">file:///home/meh/Downloads/rotate-180.mov</a> ! videoflip
video-direction=auto ! xvimagesink<br>
<br>
It could be argued that GES should always add a videoflip element
with video-direction=auto, but for now<br>
you can probably add videoflip as an effect :)<br>
<br>
<div class="gmail-m_-2278308263519352046moz-cite-prefix">On 6/5/19 11:24 PM, David Ing wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">Also, here is the output of gst-discoverer-1.0
--verbose
<div><br>
</div>
<div>I highlighted the relevant section which is <span>image orientation: rotate-180</span>.</div>
<div>
<div><br>
</div>
<div><font face="courier new, monospace">$ gst-discoverer-1.0
--verbose rotate-180.mov<br>
Analyzing <a class="gmail-m_-2278308263519352046moz-txt-link-freetext">file:///C:/Users/ding/Desktop/rotate-180.mov</a><br>
Done discovering
<a class="gmail-m_-2278308263519352046moz-txt-link-freetext">file:///C:/Users/ding/Desktop/rotate-180.mov</a><br>
<br>
Topology:<br>
container: video/quicktime<br>
audio: audio/mpeg, mpegversion=(int)4,
framed=(boolean)true, stream-format=(string)raw,
level=(string)2, base-profile=(string)lc,
profile=(string)lc, codec_data=(buffer)1208,
rate=(int)44100, channels=(int)1<br>
Tags:<br>
audio codec: MPEG-4 AAC audio<br>
maximum bitrate: 64000<br>
bitrate: 64000<br>
datetime: 2016-03-14T08:26:08Z<br>
QT atom: buffer of 34 bytes<br>
container format: Quicktime<br>
<br>
Codec:<br>
audio/mpeg, mpegversion=(int)4,
framed=(boolean)true, stream-format=(string)raw,
level=(string)2, base-profile=(string)lc,
profile=(string)lc, codec_data=(buffer)1208,
rate=(int)44100, channels=(int)1<br>
Additional info:<br>
None<br>
Stream ID:
a2bd37016805819d7874188ad12d70943361aa53b0c7253a2b9813b7f8ab3cb5/002<br>
Language: <unknown><br>
Channels: 1 (unknown layout)<br>
Sample rate: 44100<br>
Depth: 32<br>
Bitrate: 64000<br>
Max bitrate: 64000<br>
video: video/x-h264, stream-format=(string)avc,
alignment=(string)au, level=(string)4.1,
profile=(string)high,
codec_data=(buffer)01640029ffe1001067640029ac5680780227e59a8080808101000528ee04f2c0,
width=(int)1920, height=(int)1080,
framerate=(fraction)24/1,
pixel-aspect-ratio=(fraction)1/1,
colorimetry=(string)bt709,
interlace-mode=(string)progressive,
chroma-format=(string)4:2:0, bit-depth-luma=(uint)8,
bit-depth-chroma=(uint)8, parsed=(boolean)true<br>
Tags:<br>
<span style="background-color:rgb(255,255,0)">image
orientation: rotate-180</span><br>
video codec: H.264 / AVC<br>
bitrate: 17149794<br>
datetime: 2016-03-14T08:26:08Z<br>
QT atom: buffer of 34 bytes<br>
container format: Quicktime<br>
<br>
Codec:<br>
video/x-h264, stream-format=(string)avc,
alignment=(string)au, level=(string)4.1,
profile=(string)high,
codec_data=(buffer)01640029ffe1001067640029ac5680780227e59a8080808101000528ee04f2c0,
width=(int)1920, height=(int)1080,
framerate=(fraction)24/1,
pixel-aspect-ratio=(fraction)1/1,
colorimetry=(string)bt709,
interlace-mode=(string)progressive,
chroma-format=(string)4:2:0, bit-depth-luma=(uint)8,
bit-depth-chroma=(uint)8, parsed=(boolean)true<br>
Additional info:<br>
None<br>
Stream ID:
a2bd37016805819d7874188ad12d70943361aa53b0c7253a2b9813b7f8ab3cb5/001<br>
Width: 1920<br>
Height: 1080<br>
Depth: 24<br>
Frame rate: 24/1<br>
Pixel aspect ratio: 1/1<br>
Interlaced: false<br>
Bitrate: 17149794<br>
Max bitrate: 0<br>
<br>
Properties:<br>
Duration: 0:00:10.955000000<br>
Seekable: yes<br>
Live: no<br>
Tags:<br>
audio codec: MPEG-4 AAC audio<br>
maximum bitrate: 64000<br>
bitrate: 64000<br>
datetime: 2016-03-14T08:26:08Z<br>
QT atom: buffer of 34 bytes<br>
container format: Quicktime<br>
image orientation: rotate-180<br>
video codec: H.264 / AVC<br>
<br>
WARNING: no real random source present!</font><br>
</div>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Wed, Jun 5, 2019 at 12:51
PM David Ing <<a href="mailto:ding@panopto.com" target="_blank">ding@panopto.com</a>> wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div dir="ltr">I have an old *.mov file ...
<div><br>
</div>
<div><a href="https://drive.google.com/file/d/1qNm2ISC5qnI3VN0MwemCcb_QjweJAjYF/view?usp=sharing" target="_blank">https://drive.google.com/file/d/1qNm2ISC5qnI3VN0MwemCcb_QjweJAjYF/view?usp=sharing</a><br>
<div><br>
</div>
<div>... which is tagged in a way that indicates it should
be rotated when it is displayed. Below (at end of this
message) is an excerpt from an ffprobe command which
demonstrates the how the file is tagged (I highlighted
the relevant output).</div>
<div><br>
</div>
<div>I am using the file as a GESUriClip inside of a
GESTimeline, and the rotation is not being applied. It
comes through upside-down.</div>
<div><br>
</div>
<div><b>My question is</b>: Is this a bug? Or am I
expected to detect the tags manually and then modify the
"video-direction" property of GESVideoSource myself?</div>
<div><br>
</div>
<div>---------------------------------</div>
<div>$ <b>ffprobe -v quiet -show_streams rotate-180.mov</b><br>
[STREAM]<br>
index=0<br>
codec_name=h264<br>
codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part
10<br>
profile=High<br>
codec_type=video<br>
codec_time_base=2191/105200<br>
codec_tag_string=avc1<br>
codec_tag=0x31637661<br>
width=1920<br>
height=1080<br>
coded_width=1920<br>
coded_height=1088<br>
has_b_frames=0<br>
sample_aspect_ratio=N/A<br>
display_aspect_ratio=N/A<br>
pix_fmt=yuv420p<br>
level=41<br>
color_range=tv<br>
color_space=bt709<br>
color_transfer=bt709<br>
color_primaries=bt709<br>
chroma_location=left<br>
field_order=unknown<br>
timecode=N/A<br>
refs=1<br>
is_avc=true<br>
nal_length_size=4<br>
id=N/A<br>
r_frame_rate=24/1<br>
avg_frame_rate=52600/2191<br>
time_base=1/600<br>
start_pts=0<br>
start_time=0.000000<br>
duration_ts=6573<br>
duration=10.955000<br>
bit_rate=17150952<br>
max_bit_rate=N/A<br>
bits_per_raw_sample=8<br>
nb_frames=263<br>
nb_read_frames=N/A<br>
nb_read_packets=N/A<br>
DISPOSITION:default=1<br>
DISPOSITION:dub=0<br>
DISPOSITION:original=0<br>
DISPOSITION:comment=0<br>
DISPOSITION:lyrics=0<br>
DISPOSITION:karaoke=0<br>
DISPOSITION:forced=0<br>
DISPOSITION:hearing_impaired=0<br>
DISPOSITION:visual_impaired=0<br>
DISPOSITION:clean_effects=0<br>
DISPOSITION:attached_pic=0<br>
DISPOSITION:timed_thumbnails=0<br>
<span style="background-color:rgb(255,229,153)">TAG:rotate=180</span><br>
TAG:creation_time=2016-03-14T08:26:08.000000Z<br>
TAG:language=und<br>
TAG:handler_name=Core Media Video<br>
TAG:encoder=H.264<br>
<span style="background-color:rgb(255,229,153)">[SIDE_DATA]<br>
side_data_type=Display Matrix<br>
displaymatrix=<br>
00000000: -65536 0 0<br>
00000001: 0 -65536 0<br>
00000002: 125829120 70778880 1073741824<br>
<br>
rotation=-180<br>
[/SIDE_DATA]</span><br>
[/STREAM]<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
<fieldset class="gmail-m_-2278308263519352046mimeAttachmentHeader"></fieldset>
<pre class="gmail-m_-2278308263519352046moz-quote-pre">_______________________________________________
gstreamer-devel mailing list
<a class="gmail-m_-2278308263519352046moz-txt-link-abbreviated" href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank">gstreamer-devel@lists.freedesktop.org</a>
<a class="gmail-m_-2278308263519352046moz-txt-link-freetext" href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a></pre>
</blockquote>
<br>
</div>
_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org" target="_blank">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a></blockquote></div></div>