summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* mpegtspacketizer: handle early PTS conversion when a group has been foundAurélien Zanelli2016-04-061-2/+6
| | | | | | | | | | | | | | | | In some cases, the PTS might be smaller than the first observed PCR value which causes element to apply wraparound leading to bogus timestamp. To solve this, we only apply it if the PTS-PCR difference is greater that 1 second to be sure that it's a real wraparound. Moreover, using unsigned 32 bits values to handle wrapover could end up with bogus value, so it use pts value to handle it. Also, convert pcr time to gst time before comparing it to pts. Since refpcr is expressed in PCR time base while pts is expressed in GStreamer time. https://bugzilla.gnome.org/show_bug.cgi?id=743259
* dashdemux: correctly handle an HTTP-XSDATE that is exactly the size of the ↵Florin Apostol2016-04-061-6/+8
| | | | | | | | | | | | | | | | date string The code in the gst_dash_demux_parse_http_xsdate() was trying to handle the case where the string is not null terminated by resizing the buffer and appending a zero byte. This does not work if the buffer is exactly the length of the string because the gst_buffer_resize() function does not re-allocate the buffer, it just changes its size. If a buffer is passed to gst_dash_demux_parse_http_xsdate() that is exactly the length of the string, the function fails with an assert failure in gst_buffer_resize(). https://bugzilla.gnome.org/show_bug.cgi?id=762148
* fbdevsink: fix bytes per pixel calculationPeter Seiderer2016-04-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Simple pipeline $ gst-launch-1.0 videotestsrc ! fbdevsink crashes with SIGSEGV in case the frambuffer xres is smaller than the virtual xres resolution, e.g.: $ fbset mode "800x480-0" # D: 0.000 MHz, H: 0.000 kHz, V: 0.000 Hz geometry 800 480 1920 1200 16 timings 0 0 0 0 0 0 0 accel true rgba 5/11,6/5,5/0,0/0 endmode Debug: $ gdb gst-launch-1.0 (gdb) run videotestsrc ! fbdevsink (gdb) where #0 0xb6bd2d24 in __memcpy_neon () at ../sysdeps/arm/armv7/multiarch/memcpy_impl.S:591 #1 0xb69b04e8 in gst_fbdevsink_show_frame (videosink=0x10a3378, buf=0xb5c08838) at gstfbdevsink.c:269 #2 0xb69e88c4 in gst_base_sink_do_preroll (sink=sink@entry=0x10a3378, obj=0xb5c08838, obj@entry=0xa0) at gstbasesink.c:2281 #3 0xb69e92bc in gst_base_sink_do_sync (basesink=basesink@entry=0x10a3378, obj=0xa0, obj@entry=0xb5c08838, late=0x0, late@entry=0xb6548ba0, step_end=0x140, step_end@entry=0xb6548ba4) at gstbasesink.c:2500 #4 0xb69ea67c in gst_base_sink_chain_unlocked ( basesink=basesink@entry=0x10a3378, obj=0x0, obj@entry=0xb5c08838, is_list=is_list@entry=0, pad=<optimized out>) at gstbasesink.c:3486 #5 0xb69ec1c0 in gst_base_sink_chain_main (basesink=0x10a3378, pad=<optimized out>, obj=0xb5c08838, is_list=0) at gstbasesink.c:3647 #6 0xb6eb5b10 in gst_pad_chain_data_unchecked (pad=0x10a6170, type=<optimized out>, data=0xb5c08838) at gstpad.c:4086 #7 0xb6eb7a34 in gst_pad_push_data (pad=pad@entry=0x10a6020, type=type@entry=4112, data=0xb5c08838) at gstpad.c:4338 #8 0xb6ebf344 in gst_pad_push (pad=pad@entry=0x10a6020, buffer=<optimized out>) at gstpad.c:4454 #9 0xb69f22f0 in gst_base_src_loop (pad=0x10a6020) at gstbasesrc.c:2845 #10 0xb6eeddfc in gst_task_func (task=0x10a8828) at gsttask.c:331 #11 0xb6d485a0 in g_thread_pool_thread_proxy (data=<optimized out>) at gthreadpoQuit (gdb) frame 1 #1 0xb69b04e8 in gst_fbdevsink_show_frame (videosink=0x10a3378, buf=0xb5c08838) at gstfbdevsink.c:269 269 gstfbdevsink.c: No such file or directory. (gdb) p fbdevsink $1 = (GstFBDEVSink *) 0x10a3378 (gdb) p *fbdevsink $2 = {videosink = {element = {element = {object = {object = { g_type_instance = {g_class = 0x10a2d60}, ref_count = 3, qdata = 0x0}, lock = {p = 0x0, i = {0, 0}}, name = 0x10a2f30 "fbdevsink0", parent = 0x10a70a0, flags = 32, control_bindings = 0x0, control_rate = 100000000, last_sync = 18446744073709551615, _gst_reserved = 0x0}, state_lock = {p = 0x109f9a8, i = {0, 0}}, state_cond = {p = 0x0, i = { 3, 0}}, state_cookie = 2, target_state = GST_STATE_PAUSED, current_state = GST_STATE_READY, next_state = GST_STATE_PAUSED, pending_state = GST_STATE_PAUSED, last_return = GST_STATE_CHANGE_ASYNC, bus = 0x108bcb8, clock = 0x0, base_time = 0, start_time = 0, numpads = 1, pads = 0x109cc20, numsrcpads = 0, srcpads = 0x0, numsinkpads = 1, sinkpads = 0x109cc30, pads_cookie = 1, _gst_reserved = {0x0, 0x0, 0x0, 0x0}}, sinkpad = 0x10a6170, pad_mode = GST_PAD_MODE_PUSH, offset = 0, can_activate_pull = 0, can_activate_push = 1, preroll_lock = {p = 0x1, i = {1, 0}}, preroll_cond = {p = 0x0, i = {0, 0}}, eos = 0, need_preroll = 1, have_preroll = 0, playing_async = 1, have_newsegment = 1, segment = {flags = GST_SEGMENT_FLAG_NONE, rate = 1, applied_rate = 1, format = GST_FORMAT_TIME, base = 0, offset = 0, start = 0, stop = 18446744073709551615, time = 0, position = 33333333, duration = 18446744073709551615, _gst_reserved = {0x0, 0x0, 0x0, 0x0}}, clock_id = 0x0, sync = 1, flushing = 0, running = 0, max_lateness = 20000000, priv = 0x10a3188, _gst_reserved = { 0x0 <repeats 20 times>}}, width = 0, height = 0, priv = 0x10a3180, _gst_reserved = {0x0, 0x0, 0x0, 0x0}}, fixinfo = { id = '\000' <repeats 15 times>, smem_start = 1078984704, smem_len = 4608000, type = 0, type_aux = 0, visual = 2, xpanstep = 1, ypanstep = 1, ywrapstep = 0, line_length = 3840, mmio_start = 0, mmio_len = 0, accel = 0, capabilities = 0, reserved = {0, 0}}, varinfo = { xres = 800, yres = 480, xres_virtual = 1920, yres_virtual = 1200, xoffset = 0, yoffset = 0, bits_per_pixel = 16, grayscale = 0, red = { offset = 11, length = 5, msb_right = 0}, green = {offset = 5, length = 6, msb_right = 0}, blue = {offset = 0, length = 5, msb_right = 0}, transp = {offset = 0, length = 0, msb_right = 0}, nonstd = 0, activate = 0, height = 4294967295, width = 4294967295, accel_flags = 1, pixclock = 0, left_margin = 0, right_margin = 0, upper_margin = 0, lower_margin = 0, hsync_len = 0, vsync_len = 0, sync = 0, vmode = 0, rotate = 0, colorspace = 0, reserved = {0, 0, 0, 0}}, fd = 5, framebuffer = 0xb654a000 <error: Cannot access memory at address 0xb654a000>, device = 0x10a38d8 "/dev/fb0", width = 320, height = 240, cx = 240, cy = 120, linelen = 1280, lines = 240, bytespp = 4, fps_n = 30, fps_d = 1} (gdb) p map $3 = {memory = 0xb5d24008, flags = GST_MAP_READ, data = 0xb5d24058 '\377' <repeats 90 times>, "\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\340\377\377\a\377\a\377\a\377\a\377\a\377\a\377\a\377\a\377\a"..., size = 153600, maxsize = 153603, user_data = {0x0, 0xb69e3ba4 <gst_base_sink_set_last_buffer_unlocked+92>, 0x10a3378, 0x0}, _gst_reserved = {0x1, 0x10a3378, 0xb6f50dd8 <_gst_debug_min>, 0xb5c08838}} (gdb) p i $4 = 121 Fix this by changing the fbdevsink->bytespp calculation using the frame buffer xres_virtual size instead of xres. https://bugzilla.gnome.org/show_bug.cgi?id=762482
* mpeg4parser: prevent assertion when scanning for sync codeThiago Santos2016-04-061-2/+5
| | | | | Only search if there is indeed enough data to be searched otherwise an assertion is raised
* curlbasesink: don't send empty buffersDavid Fernandez2016-04-061-2/+7
| | | | | | Fixes problem in curlhttpsink when qtmux uses faststart. https://bugzilla.gnome.org/show_bug.cgi?id=762013
* mssdemux: do not assert on fragment reloads for non-liveThiago Santos2016-04-061-2/+0
| | | | | It can be used as a resource to verify if the server has updated something in the Manifest when downloads are failing
* decklinkaudiosrc: Fix discont trackingJan Schmidt2016-04-061-1/+2
| | | | | Don't reset the marker that's tracking disconts until either the discont disappears or we resync.
* opusdec: fix wrong buffer being checked for missing dataVincent Penquerc'h2016-04-061-2/+2
| | | | | | | This caused a decoding error if the resulting (wrong) buffer size was passed to the Opus decoding API. https://bugzilla.gnome.org/show_bug.cgi?id=758158
* adaptivedemux: fix segment update on seeksThiago Santos2016-04-061-3/+3
| | | | | Fixes typo on reverse rate check and also only update the position when the start/stop was actually changed.
* adaptivedemux: stop reverse playback when we reach the limitThiago Santos2016-04-061-1/+1
| | | | | | | | Avoids downloading and pushing a full segment just to get 1 nanosecond of data. This happens frequently when seeking is done with flags that adjust to boundaries or when the start is aligned with segment starts. The later is common when segment durations is a multiple of a second.
* adaptivedemux: correctly track segment.position in reverse playbackThiago Santos2016-04-061-2/+6
| | | | | | For reverse, set position to segment.stop when starting and also don't set the position to fragment end timestamp when it finishes, just leave it at the fragment start.
* mpeg2enc: Provide format as a string instead of a char to gst_structure_newVivia Nikolaidou2016-03-041-1/+1
| | | | The format was provided as 'I420' instead of "I420", causing a crash.
* adaptivedemux: fix race on shutdown that could result in deadlocksTim-Philipp Müller2016-02-202-4/+15
| | | | | | | | Minimal fix for one particular deadlock, adaptivedemux has seen a general re-work of its locking in git master, but that would be too intrusive to backport into the stable branch. We need to use a separate variable to signal cancellation here.
* ladspa: Fix some debugsThibault Saunier2016-02-171-4/+3
|
* gtk(gl)sink: remove the signal handlers on finalizeMatthew Waters2016-02-162-3/+12
| | | | | | | | | | | It's possible that the sink element will be freed before the widget is destroyed. When the widget was eventually destroyed, it was attempting to access member variables of the freed sink struct which resulted in undefined behaviour. Fix by disconnecting our signal on finalize. https://bugzilla.gnome.org/show_bug.cgi?id=762098
* glvideomixer: fix checker vbo leakWang Xin-yu (王昕宇)2016-02-011-0/+5
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=760925
* glprototypes: fix parameter type of glGenBuffersWang Xin-yu (王昕宇)2016-01-291-1/+1
| | | | | | The number of buffers should be GLsizei instead of GLuint. https://bugzilla.gnome.org/show_bug.cgi?id=761272
* gleffects: fix gleffects fisheye shader compile errorHaihua Hu2016-01-291-1/+1
| | | | | | | | On some embedded systems, sqrt() is not supported in the shader, use the actual value of sqrt(2) instead. Signed-off-by: Haihua Hu <b55597@freescale.com> Bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=761271
* h265parse: Fix buffer leak when sps is not presentVineeth TM2016-01-251-3/+4
| | | | | | | When sps data is NULL, the buffer allocated and mapped is not being freed. In this scenario there is no need to allocate the buffer as we are supposed to return NULL. https://bugzilla.gnome.org/show_bug.cgi?id=761070
* h265parse: Fix buffer memory leak.Vineeth TM2016-01-251-1/+1
| | | | | | | While setting caps, codec_data buffer is mapped, but not being unmapped leading to memory leaks. https://bugzilla.gnome.org/show_bug.cgi?id=761070
* Release 1.6.31.6.3Sebastian Dröge2016-01-2082-145/+343
|
* Update .po filesSebastian Dröge2016-01-2040-40/+40
|
* shmsink: fix possible deadlock in _render()/ _allocator_free()Matt Crane2016-01-161-1/+1
| | | | | | | | Drop object lock before unrefing memory, otherwise the object lock might be taken again from the allocator and then things deadlock. https://bugzilla.gnome.org/show_bug.cgi?id=760551
* sbc: sbcdec: Fix frame length calculationTim Sheridan2016-01-161-4/+4
| | | | | | | | | SBC frame length calculation wasn't being rounded up to the nearest byte (as specified in the A2DP 1.0 specification, section 12.9). This could cause 'stereo' and 'joint stereo' mode SBC streams to have incorrectly calculated frame lengths. https://bugzilla.gnome.org/show_bug.cgi?id=742446
* qml: Mark material dirty when texture buffer is updatedSergey Borovkov2016-01-151-0/+1
| | | | | | Qt might not redraw the scene otherwise. https://bugzilla.gnome.org/show_bug.cgi?id=758286
* mpegtsmux: fix reserve bits so they are 1'sBob Holcomb2016-01-111-3/+3
| | | | | | | | The MPEG standard (ISO-13880-1) says the reserve bits need to be set to one (2.1.64). This is causing transport streams to fail validation on some systems. https://bugzilla.gnome.org/show_bug.cgi?id=760127
* mxftypes: Don't store pointers in stack allocated guintsSebastian Dröge2016-01-111-4/+3
| | | | | | | | | This works usually in this place, unless the compiler optimizes things in interesting ways in which case it causes stack corruption and crashes later. The compiler in question here is clang with -O1, which seems to pack the stack a bit more and causes writing to the guint as pointer to overwrite map.memory, which then later crashes during unmapping of the memory.
* gl: Add \0 terminators for the Apple sync extensionSebastian Dröge2015-12-281-2/+2
| | | | Otherwise GL initialization might check for extensions forever and never finishes.
* pcapparse: don't crash on 0-sized packetsTim-Philipp Müller2015-12-231-1/+5
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=756573
* openjpegdec: Don't crash when decoding returns NULL data for any componentSebastian Dröge2015-12-181-0/+9
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=758943
* Release 1.6.21.6.2Sebastian Dröge2015-12-1482-172/+435
|
* Update .po filesSebastian Dröge2015-12-1440-301/+429
|
* po: Update translationsSebastian Dröge2015-12-144-410/+280
|
* gltransformation: clear to transparentMatthew Waters2015-12-121-1/+1
| | | | | Otherwise composition will result in a black frame outside the transformed video.
* glproto: include function definitions for GL_APPLE_syncMatthew Waters2015-12-121-3/+3
| | | | | Provides a performance improvement on iOS where we were falling back to glFinish on settting sync points.
* directsoundsrc: Check return values of DirectSound functions in read loopThomas Roos2015-12-111-1/+13
| | | | | | | | Otherwise we might end up in an infinite loop because of errors. Also take the element's mutex in unprepare(). https://bugzilla.gnome.org/show_bug.cgi?id=738292
* openjpegenc: All frames in JPEG2000 are keyframes, mark them as suchSebastian Dröge2015-12-081-0/+1
|
* pcapparse: Forward FLUSH_STOP events downstream tooPaolo Pettinato2015-12-071-1/+2
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=758913
* d3dvideosink: Don't try to recreate swapchain while the window is minimizedSebastian Dröge2015-12-011-1/+19
| | | | | | | It will fail and cause the sink to crash. Instead wait until the window is visible again before checking if the swapchain really has to be recreated. https://bugzilla.gnome.org/show_bug.cgi?id=741608
* qml: reuse existing GstQSGTextureRoman Nowicki2015-11-201-4/+2
| | | | | | Fixes a memory leak leaking the texture objects. https://bugzilla.gnome.org/show_bug.cgi?id=758286
* qml: activate the wrapped context when bindingMatthew Waters2015-11-201-4/+9
| | | | | | Mitigates the following critical gst_gl_context_thread_add: assertion 'context->priv->active_thread == g_thread_self ()' failed
* qml: proper initialization if scene is already initializedRoman Nowicki2015-11-201-1/+5
| | | | | | | | The scene graph can be initialized when the we receive window handle change notification and so we will not receive a scenegraph initialization notification. Initialize ourself in this case. https://bugzilla.gnome.org/show_bug.cgi?id=758337
* glimagesink: Fix structure memory leakVineeth TM2015-11-171-1/+3
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=758205
* tsdemux: fix pending buffers leak when flushingNicolas Huet2015-11-161-0/+14
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=757895
* tsdemux: Fix pad leak when the pad is never exposedEtienne Peron2015-11-161-0/+2
| | | | | | | | If tsdemux never receives data for a stream, the corresponding pad will never be added and stream->active will remain FALSE. When the stream is removed, the pad will not be unreffed and will be leaked. https://bugzilla.gnome.org/show_bug.cgi?id=757873
* vtenc: Set profile_level to NULL after releaseHeinrich Fink2015-11-161-0/+1
| | | | | | | | Otherwise, gst_vtenc_negotiate_profile_and_level will double-release as it checks for profile_level != NULL. This caused crashes when the vtenc instance is stopped and then restarted. https://bugzilla.gnome.org/show_bug.cgi?id=757935
* tests:glcolorconvert: Fix caps memory leakVineeth TM2015-11-111-0/+1
| | | | | | Output caps being got from video info is not getting freed https://bugzilla.gnome.org/show_bug.cgi?id=757929
* gtk: add the overlaycomposition feature to the template capsMatthew Waters2015-11-101-2/+5
| | | | | | | | There is a possibility that the _get_caps impl will be called with the feature in the filter caps which when interecting with the template, will return EMPTY and therefore fail negotiation. https://bugzilla.gnome.org/show_bug.cgi?id=757854
* dvbsuboverlay: Don't send flush eventsEdward Hervey2015-11-071-30/+3
| | | | | | It is up to the element handling the seek to send flush events downstream, otherwise we end up with a situation where upstream would get unexpected GST_FLOW_FLUSHING
* assrender: don't send flush events on seeksTim-Philipp Müller2015-11-071-45/+7
| | | | | | | | | | It's for the upstream element driving the pipeline to handle seeks and send flush events or not, filters should not interfere here, otherwise downstream pads could be flushing before upstream pads are flushing, which can result in GST_FLOW_ERROR being sent instead of GST_FLOW_FLUSHING when trying to forward sticky events at just the wrong moment.