[vlc-devel] [PATCH] Detecting language of subtitles using its filename

Jean-Baptiste Kempf jb at videolan.org
Thu Feb 7 15:18:15 CET 2013


On 02 Feb, Walter Cacau wrote :
> +    /* Detecting subtitle language using its filename */
> +    {
> +        input_thread_t * p_input = demux_GetParentInput(p_demux);
> +        char * psz_video_url = input_item_GetURI(input_GetItem(p_input));
> +        vlc_object_release(p_input);
> +
> +        if ( psz_video_url )
> +        {
> +            char * psz_language = get_language_from_filename(
> +                p_demux->psz_location,
> +                psz_video_url
> +
> +            );
The new line is weirdly placed.

Are you sure you cannot get the filename and not the URL?


> +static char * get_language_from_filename( const char * psz_sub_location,
> +                                          const char * psz_video_url )
> +{
> +    char * psz_ret = NULL;
> +    char * psz_video_file = NULL;
> +    char * psz_sub_file = NULL;
> +    char * psz_tmp;
> +    char * psz_sub_suffix;
> +    char * ps_language_end;
> +
> +    psz_video_file = strrchr( psz_video_url, '/' );
> +    if( !psz_video_file ) goto end;
> +    psz_video_file++;
> +    psz_video_file = decode_URI_duplicate(psz_video_file);
> +    if( !psz_video_file ) goto end;
> +
> +    psz_sub_file = strrchr( psz_sub_location, '/' );
> +    if( !psz_sub_file ) goto end;
> +    psz_sub_file++;
> +    psz_sub_file = decode_URI_duplicate(psz_sub_file);
> +    if( !psz_video_file ) goto end;
> +
> +    /* Removing extension, but leaving the dot */
> +    psz_tmp = strrchr( psz_video_file, '.' );
> +    if( !psz_tmp ) goto end;
> +    psz_tmp[1] = '\0';
> +
> +    /* Extracting sub file prefix */
> +    if( strstr(psz_sub_file, psz_video_file) != psz_sub_file ) goto end;
> +    psz_sub_suffix = psz_sub_file + strlen(psz_video_file);
> +
> +    ps_language_end = strrchr( psz_sub_suffix, '.' );
> +    if( !ps_language_end ) goto end;
> +    *ps_language_end = '\0';
> +
> +    psz_ret = strdup(psz_sub_suffix);
> +
> +end:
> +    FREENULL(psz_video_file);
> +    FREENULL(psz_sub_file);
> +    return psz_ret;
> +}

Best regards,

-- 
Jean-Baptiste Kempf
http://www.jbkempf.com/ - +33 672 704 734
Sent from my Electronic Device



More information about the vlc-devel mailing list