<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2016-02-03 22:37 GMT+06:00 Rémi Denis-Courmont <span dir="ltr"><<a href="mailto:remi@remlab.net" target="_blank">remi@remlab.net</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="">On Sunday 31 January 2016 09:48:53 Sergey Radionov wrote:<br>
> ---<br>
>  modules/video_output/vmem.c | 44<br>
> ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 38<br>
> insertions(+), 6 deletions(-)<br>
><br>
> diff --git a/modules/video_output/vmem.c b/modules/video_output/vmem.c<br>
> index 5a6d869..bed22c8 100644<br>
> --- a/modules/video_output/vmem.c<br>
> +++ b/modules/video_output/vmem.c<br>
> @@ -3,6 +3,7 @@<br>
><br>
> ***************************************************************************<br>
</span>> ** * Copyright (C) 2008 VLC authors and VideoLAN<br>
<div><div class="h5">>   * Copyrgiht (C) 2010 Rémi Denis-Courmont<br>
> + * Copyright (C) 2016 Sergey Radionov <<a href="mailto:rsatom@gmail.com">rsatom@gmail.com</a>><br>
>   *<br>
>   * Authors: Sam Hocevar <<a href="mailto:sam@zoy.org">sam@zoy.org</a>><br>
>   *<br>
> @@ -168,6 +169,27 @@ static int Open(vlc_object_t *object)<br>
>      video_format_t fmt;<br>
>      video_format_ApplyRotation(&fmt, &vd->fmt);<br>
><br>
> +    enum {<br>
> +        fmt_len,<br>
> +        fmt_offset,<br>
> +        fmt_visible_len,<br>
> +        fmt_sar,<br>
> +        fmt_update<br>
> +    };<br>
> +    unsigned fmt_x[] = {<br>
> +        fmt.i_width,<br>
> +        fmt.i_x_offset,<br>
> +        fmt.i_visible_width,<br>
> +        vd->source.i_sar_num,<br>
> +        FALSE<br>
> +    };<br>
> +    unsigned fmt_y[] = {<br>
> +        fmt.i_height,<br>
> +        fmt.i_y_offset,<br>
> +        fmt.i_visible_height,<br>
> +        vd->source.i_sar_den,<br>
> +        FALSE<br>
> +    };<br>
<br>
</div></div>IMHO, this is needlessly ugly. Use video_format_t instead of a table, this is<br>
also more extensible.<br></blockquote><div><br>Hm... but how video_format_t should be passed to callback then? Sorry I don't understand.<br></div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Also a separate patch is needed for a proper accessor in LibVLC.<br></blockquote><div><br>Agree, but I should polish this patch first.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br><div><div class="h5">
>      if (setup != NULL) {<br>
>          char chroma[5];<br>
><br>
> @@ -176,7 +198,7 @@ static int Open(vlc_object_t *object)<br>
>          memset(sys->pitches, 0, sizeof(sys->pitches));<br>
>          memset(sys->lines, 0, sizeof(sys->lines));<br>
><br>
> -        sys->count = setup(&sys->opaque, chroma, &fmt.i_width,<br>
> &fmt.i_height, +        sys->count = setup(&sys->opaque, chroma, fmt_x,<br>
> fmt_y,<br>
>                             sys->pitches, sys->lines);<br>
>          if (sys->count == 0) {<br>
>              msg_Err(vd, "video format setup failure (no pictures)");<br>
> @@ -190,8 +212,8 @@ static int Open(vlc_object_t *object)<br>
>          fmt.i_chroma = vlc_fourcc_GetCodecFromString(VIDEO_ES, chroma);<br>
>          free(chroma);<br>
><br>
> -        fmt.i_width  = var_InheritInteger(vd, "vmem-width");<br>
> -        fmt.i_height = var_InheritInteger(vd, "vmem-height");<br>
> +        fmt_x[fmt_len]  = var_InheritInteger(vd, "vmem-width");<br>
> +        fmt_y[fmt_len] = var_InheritInteger(vd, "vmem-height");<br>
>          sys->pitches[0] = var_InheritInteger(vd, "vmem-pitch");<br>
>          sys->lines[0] = fmt.i_height;<br>
>          for (size_t i = 1; i < PICTURE_PLANE_MAX; i++)<br>
> @@ -202,9 +224,19 @@ static int Open(vlc_object_t *object)<br>
>          sys->count = 1;<br>
>          sys->cleanup = NULL;<br>
>      }<br>
> -    fmt.i_x_offset = fmt.i_y_offset = 0;<br>
> -    fmt.i_visible_width = fmt.i_width;<br>
> -    fmt.i_visible_height = fmt.i_height;<br>
> +<br>
> +    fmt.i_width = fmt_x[fmt_len];<br>
> +    fmt.i_height = fmt_y[fmt_len];<br>
> +    if (fmt_x[fmt_update] || fmt_y[fmt_update]) {<br>
> +        fmt.i_x_offset = fmt_x[fmt_offset];<br>
> +        fmt.i_y_offset = fmt_y[fmt_offset];<br>
> +        fmt.i_visible_width = fmt_x[fmt_visible_len];<br>
> +        fmt.i_visible_height = fmt_y[fmt_visible_len];<br>
> +    } else {<br>
> +        fmt.i_x_offset = fmt.i_y_offset = 0;<br>
> +        fmt.i_visible_width = fmt.i_width;<br>
> +        fmt.i_visible_height = fmt.i_height;<br>
> +    }<br>
><br>
>      if (!fmt.i_chroma) {<br>
>          msg_Err(vd, "vmem-chroma should be 4 characters long");<br>
<br>
--<br>
</div></div>Rémi Denis-Courmont<br>
<a href="http://www.remlab.net/" rel="noreferrer" target="_blank">http://www.remlab.net/</a><br>
<br>
_______________________________________________<br>
vlc-devel mailing list<br>
To unsubscribe or modify your subscription options:<br>
<a href="https://mailman.videolan.org/listinfo/vlc-devel" rel="noreferrer" target="_blank">https://mailman.videolan.org/listinfo/vlc-devel</a><br>
</blockquote></div><br></div></div>