not as clever as I hoped :-(
James
jam at tigger.ws
Fri Aug 13 09:58:46 UTC 2021
> I took much of my stuff from basic_tutorial12.c so playing with it here:
>
> when I run tutorial and send it SIGTERM the handler is immediatly invoked.
> yet is never set
> EOS is not sent (explicity, but happens)
>
> If I let the clip play to the end then EOS message and yet is set.
>
> What am I missing, in particular I want to send eos on SIGTERM
>
> volatile int yet = 0;
> GstElement *pipeline;
>
> void handler (int signum)
> {
> g_print ("[handler function] send eos] %d\n", gst_element_send_event (pipeline, gst_event_new_eos ()));
> while (!(yet)) {
> g_print ("%d\n", yet);
> g_usleep (100000);
> }
> g_print ("exit\n");
> exit (0);
> }
>
>
> and
>
> case GST_MESSAGE_EOS:
> /* end-of-stream */
> gst_element_set_state (data->pipeline, GST_STATE_READY);
> g_main_loop_quit (data->loop);
> yet = 1;
> g_print (“\nEOS\n");
> break;
>
>
> In case it is interesting here are traces:
>
> --------------------------------
> tutorial run to end:
> ————————————————
>
> jam at ws101:~> ./basic
> Buffering (100%)
> EOS
>
> ————————————————
> tutorial gets SIGTERM
> ————————————————
>
> jam at ws101:~> ./basic
> [handler function] send eos] 1
> 0
> 0
> 0
> forever
> playback STOPS but yet is never set
Can anybody help with a C eos please.
I have a sig handler (partly nicked from google)
void handler (int signum)
{
g_print ("[handler function] send eos\n");
//post EOS message to pipe line
gst_element_post_message (pipeline, gst_message_new_eos(GST_OBJECT(pipeline)));
//block until EOS is detected
gst_bus_timed_pop_filtered (gst_element_get_bus(pipeline),
GST_CLOCK_TIME_NONE, GST_MESSAGE_EOS);
g_print ("exit\n");
exit (0);
}
It definitly gets the signal
dvr at ws100:~> tail -f /var/log/dvr/gstreamer.log
[handler function] send eos
exit
but eos is not sent
dvr at ws100:~> ffprobe Channel1.13Aug2021.174559.mp4
ffprobe version 4.4 Copyright (c) 2007-2021 the FFmpeg developers
built with gcc 7 (SUSE Linux)
configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --incdir=/usr/include/ffmpeg --extra-cflags='-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -g' --optflags='-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -g' --disable-htmlpages --enable-pic --disable-stripping --enable-shared --disable-static --enable-gpl --enable-version3 --disable-openssl --enable-avresample --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcelt --enable-libcdio --enable-libdav1d --enable-libdc1394 --enable-libdrm --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libv4l2 --enable-libvpx --enable-libwebp --enable-libxml2 --enable-libzimg --enable-libzvbi --enable-libmfx --enable-vaapi --enable-vdpau --enable-version3 --enable-libfdk-aac-dlopen --enable-nonfree --enable-libvo-amrwbenc --enable-libx264 --enable-libx265 --enable-librtmp --enable-libxvid
libavutil 56. 70.100 / 56. 70.100
libavcodec 58.134.100 / 58.134.100
libavformat 58. 76.100 / 58. 76.100
libavdevice 58. 13.100 / 58. 13.100
libavfilter 7.110.100 / 7.110.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 9.100 / 5. 9.100
libswresample 3. 9.100 / 3. 9.100
libpostproc 55. 9.100 / 55. 9.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x561d9c630600] moov atom not found
Channel1.13Aug2021.174559.mp4: Invalid data found when processing input
I’m rather stuck
James
More information about the gstreamer-devel
mailing list