I straced the rygel server process, and found that during the playback of the large file(i.e when it becomes not smooth), the process is trying to call mutex() a lot, possibly there are some bugs causing temporary collission . when I play the small file, such calls do not show up
write(3, "\1\0\0\0\0\0\0\0", 8) = 8
write(3, "\1\0\0\0\0\0\0\0", 8) = 8
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}, {fd=13, events=POLLIN}, {fd=14, events=POLLIN}, {fd=16, events=POLLIN}, {fd=9, events=POLLIN|POLLPRI}, {fd=17, events=POLLIN}, {fd=28, events=POLLIN}, {fd=27, events=POLLIN}, {fd=19, events=POLLIN}, {fd=20, events=POLLIN}, {fd=21, events=POLLIN}, {fd=12, events=POLLIN}, {fd=15, events=POLLIN}, {fd=31, events=POLLIN}, {fd=24, events=POLLOUT}, {fd=18, events=POLLIN}, {fd=23, events=POLLIN}], 18, 91) = 2 ([{fd=3, revents=POLLIN}, {fd=23, revents=POLLIN}])
read(3, "\2\0\0\0\0\0\0\0", 16) = 8
write(3, "\1\0\0\0\0\0\0\0", 8) = 8
write(3, "\1\0\0\0\0\0\0\0", 8) = 8
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}, {fd=13, events=POLLIN}, {fd=14, events=POLLIN}, {fd=16, events=POLLIN}, {fd=9, events=POLLIN|POLLPRI}, {fd=17, events=POLLIN}, {fd=28, events=POLLIN}, {fd=27, events=POLLIN}, {fd=19, events=POLLIN}, {fd=20, events=POLLIN}, {fd=21, events=POLLIN}, {fd=12, events=POLLIN}, {fd=15, events=POLLIN}, {fd=31, events=POLLIN}, {fd=24, events=POLLOUT}, {fd=18, events=POLLIN}, {fd=23, events=POLLIN}], 18, 91) = 2 ([{fd=3, revents=POLLIN}, {fd=23, revents=POLLIN}])
read(3, "\2\0\0\0\0\0\0\0", 16) = 8
write(3, "\1\0\0\0\0\0\0\0", 8) = 8
write(3, "\1\0\0\0\0\0\0\0", 8) = 8
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}, {fd=13, events=POLLIN}, {fd=14, events=POLLIN}, {fd=16, events=POLLIN}, {fd=9, events=POLLIN|POLLPRI}, {fd=17, events=POLLIN}, {fd=28, events=POLLIN}, {fd=27, events=POLLIN}, {fd=19, events=POLLIN}, {fd=20, events=POLLIN}, {fd=21, events=POLLIN}, {fd=12, events=POLLIN}, {fd=15, events=POLLIN}, {fd=31, events=POLLIN}, {fd=24, events=POLLOUT}, {fd=18, events=POLLIN}, {fd=23, events=POLLIN}], 18, 91) = 2 ([{fd=3, revents=POLLIN}, {fd=23, revents=POLLIN}])
read(3, "\2\0\0\0\0\0\0\0", 16) = 8
write(3, "\1\0\0\0\0\0\0\0", 8) = 8
futex(0xdc86ab4, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0xdc86ab0, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
futex(0xb55c000, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0xb55cac4, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0xb55cac0, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
futex(0xb4c1a00, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0xdc86ce0, FUTEX_WAKE_PRIVATE, 1) = 1
write(3, "\1\0\0\0\0\0\0\0", 8) = 8
poll([{fd=3, events=POLLIN}, {fd=10, events=POLLIN}, {fd=13, events=POLLIN}, {fd=14, events=POLLIN}, {fd=16, events=POLLIN}, {fd=9, events=POLLIN|POLLPRI}, {fd=17, events=POLLIN}, {fd=28, events=POLLIN}, {fd=27, events=POLLIN}, {fd=19, events=POLLIN}, {fd=20, events=POLLIN}, {fd=21, events=POLLIN}, {fd=12, events=POLLIN}, {fd=15, events=POLLIN}, {fd=31, events=POLLIN}, {fd=24, events=POLLOUT}, {fd=18, events=POLLIN}, {fd=23, events=POLLIN}], 18, 90) = 2 ([{fd=3, revents=POLLIN}, {fd=23, revents=POLLIN}])
read(3, "~\0\0\0\0\0\0\0", 16) = 8
futex(0x2417da0, FUTEX_WAKE_PRIVATE, 1) = 1
write(3, "\1\0\0\0\0\0\0\0", 8) = 8
futex(0x2417da0, FUTEX_WAKE_PRIVATE, 1) = 1
write(3, "\1\0\0\0\0\0\0\0", 8) = 8
futex(0x2417da0, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7fbf54000020, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x7fbf54000020, FUTEX_WAKE_PRIVATE, 1) = 0
(END)