Example #1
0
static gchar * get_m3u8playlist (RequestData *request_data, EncoderOutput *encoder_output)
{
        gchar *m3u8playlist = NULL;

        /* live */
        if (g_str_has_prefix (request_data->uri, "/live/")) {
                m3u8playlist = m3u8playlist_live_get_playlist (encoder_output->m3u8_playlist);

        } else if (g_str_has_prefix (request_data->uri, "/dvr/")) {
                /* time shift */
                if (g_strrstr (request_data->parameters, "offset") != NULL) {
                        gint64 offset;

                        offset = get_gint64_parameter (request_data->parameters, "offset");
                        m3u8playlist = m3u8playlist_timeshift_get_playlist (encoder_output->record_path, offset);

                /* dvr */
                } else if (g_strrstr (request_data->parameters, "start") && 
                        g_strrstr (request_data->parameters, "duration")) {
                        gint64 start, duration;

                        start = get_gint64_parameter (request_data->parameters, "start");
                        duration = get_gint64_parameter (request_data->parameters, "duration");
                        m3u8playlist = m3u8playlist_dvr_get_playlist (encoder_output->record_path, start, duration);
                }
        }

        return m3u8playlist;
}
Example #2
0
static gchar * get_m3u8playlist (RequestData *request_data, EncoderOutput *encoder_output)
{
    gchar *m3u8playlist = NULL;
    gchar *start, *end;

    if (!is_channel_playlist_url_valid (request_data)) {
        GST_WARNING ("bad request url: %s", request_data->uri);
        return NULL;
    }

    /* time shift */
    if (g_strrstr (request_data->parameters, "timeshift") != NULL) {
        gint64 offset;

        offset = get_gint64_parameter (request_data->parameters, "timeshift");
        m3u8playlist = m3u8playlist_timeshift_get_playlist (encoder_output->record_path, offset);

        /* callback */
    } else if (g_strrstr (request_data->parameters, "start") && g_strrstr (request_data->parameters, "end")) {
        start = get_str_parameter (request_data->parameters, "start");
        end = get_str_parameter (request_data->parameters, "end");
        if ((start != NULL) && (end != NULL)) {
            m3u8playlist = m3u8playlist_callback_get_playlist (encoder_output->record_path, encoder_output->dvr_duration, start, end);
        }
        if (start != NULL) {
            g_free (start);
        }
        if (end != NULL) {
            g_free (end);
        }

        /* live */
    } else if (encoder_output->m3u8_playlist != NULL) {
        m3u8playlist = m3u8playlist_live_get_playlist (encoder_output->m3u8_playlist);
    }

    return m3u8playlist;
}