After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 754980 - audiobasesink: audio skipping when playing it repeatedly.
audiobasesink: audio skipping when playing it repeatedly.
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
unspecified
Other All
: Normal normal
: 1.6.1
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2015-09-14 06:48 UTC by Eunhae Choi
Modified: 2015-10-20 07:18 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
test code to reproduce the issue (21.44 KB, application/zip)
2015-09-14 06:48 UTC, Eunhae Choi
  Details
audiobasesink: return right value of _eos_wait() (2.44 KB, patch)
2015-09-14 06:51 UTC, Eunhae Choi
none Details | Review
audiobasesink: return right value of _eos_wait() (2.60 KB, patch)
2015-09-14 09:05 UTC, Eunhae Choi
committed Details | Review

Description Eunhae Choi 2015-09-14 06:48:29 UTC
Created attachment 311256 [details]
test code to reproduce the issue

When I run a game app, the sound of count does not match with counter digit with pulsesink in playbin.

I've tested it on gstreamer master with attached test code and wav file.
Thank you.

# libtool --mode=link gcc audio_repeat.c -o audio_repeat $(pkg-config --cflags --libs gstreamer-1.0)

# ./audio_repeat file:///home/[path]/clock.wav
Comment 1 Eunhae Choi 2015-09-14 06:51:23 UTC
Created attachment 311257 [details] [review]
audiobasesink: return right value of _eos_wait()

If the flush-start is arrived during _eos_wait() in basesink,
the 'eos' flag is overwritten to TRUE after exiting the _eos_wait().

To resolve the overwritten issue,
the subclass doing the _eos_wait() call should return the right value(FALSE).

If the eos flag is set to TRUE again, 
it will cause error(enter the eos flow) of the following state changing from PAUSED to PLAYING.
Comment 2 Eunhae Choi 2015-09-14 09:05:48 UTC
Created attachment 311262 [details] [review]
audiobasesink: return right value of _eos_wait()
Comment 3 Thiago Sousa Santos 2015-10-19 15:29:19 UTC
commit e98b96247f93e03db2c50dad9364e94f78eb8e0c
Author: eunhae choi <eunhae1.choi@samsung.com>
Date:   Mon Sep 14 15:25:11 2015 +0900

    audiobasesink: fix issue about eos handling during flushing
    
    If the flush-start is arrived during _eos_wait() in basesink,
    the 'eos' flag is overwritten to TRUE after exiting the _eos_wait().
    To resolve the overwritten issue,
    the subclass doing the _eos_wait() call should return the right value.
    If the eos flag is set to TRUE again, it will cause error(enter the eos flow)
    of the following state changing from PAUSED to PLAYING in basesink.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=754980
Comment 4 Thiago Sousa Santos 2015-10-19 15:29:45 UTC
Comment on attachment 311262 [details] [review]
audiobasesink: return right value of _eos_wait()

Looks safe enough to go into 1.6, what do you think?
Comment 5 Eunhae Choi 2015-10-20 03:07:35 UTC
I hope so, I can not find any side effect of this patch yet.
Comment 6 Sebastian Dröge (slomo) 2015-10-20 07:06:38 UTC
Sounds like a good idea