static void gss_program_jpeg_resource (GssTransaction * t) { GssProgram *program = (GssProgram *) t->resource->priv; GstBuffer *buffer = NULL; if (!program->enable_streaming || program->state != GSS_PROGRAM_STATE_RUNNING) { soup_message_set_status (t->msg, SOUP_STATUS_NO_CONTENT); return; } if (program->jpegsink) { g_object_get (program->jpegsink, "last-buffer", &buffer, NULL); } if (buffer) { soup_message_set_status (t->msg, SOUP_STATUS_OK); soup_message_set_response (t->msg, "image/jpeg", SOUP_MEMORY_COPY, (void *) GST_BUFFER_DATA (buffer), GST_BUFFER_SIZE (buffer)); gst_buffer_unref (buffer); } else { gss_html_error_404 (t->server, t->msg); } }
static void gss_program_jpeg_resource (GssTransaction * t) { GssProgram *program = (GssProgram *) t->resource->priv; #if GST_CHECK_VERSION(1,0,0) GstSample *sample = NULL; #endif GstBuffer *buffer = NULL; if (!program->enable_streaming || program->state != GSS_PROGRAM_STATE_RUNNING) { soup_message_set_status (t->msg, SOUP_STATUS_NO_CONTENT); return; } #if GST_CHECK_VERSION(1,0,0) if (program->jpegsink) { g_object_get (program->jpegsink, "last-sample", &sample, NULL); } if (sample) { GstMapInfo mapinfo; buffer = gst_sample_get_buffer (sample); if (buffer) { soup_message_set_status (t->msg, SOUP_STATUS_OK); gst_buffer_map (buffer, &mapinfo, GST_MAP_READ); soup_message_set_response (t->msg, "image/jpeg", SOUP_MEMORY_COPY, (char *) mapinfo.data, mapinfo.size); gst_buffer_unmap (buffer, &mapinfo); } gst_sample_unref (sample); return; } #else if (program->jpegsink) { g_object_get (program->jpegsink, "last-buffer", &buffer, NULL); } if (buffer) { soup_message_set_status (t->msg, SOUP_STATUS_OK); soup_message_set_response (t->msg, "image/jpeg", SOUP_MEMORY_COPY, (char *) GST_BUFFER_DATA (buffer), GST_BUFFER_SIZE (buffer)); gst_buffer_unref (buffer); return; } #endif gss_html_error_404 (t->server, t->msg); }