[x265] [PATCH] Updated x265_param_parse to use parseName & a few nit fixes

dave dtyx265 at gmail.com
Tue Feb 25 16:02:11 CET 2014


On 02/24/2014 09:41 PM, Steve Borho wrote:
> On Mon, Feb 24, 2014 at 11:19 PM,  <dtyx265 at gmail.com> wrote:
>> # HG changeset patch
>> # User David T Yuen <dtyx265 at gmail.com>
>> # Date 1393305431 28800
>> # Node ID 40a442a5c7facb5b80e743661ed34f5286cbb475
>> # Parent  18894c99e1a71dc79e0ae55d4d4b8ed5d0c59c69
>> Updated x265_param_parse to use parseName & a few nit fixes
>>
>> diff -r 18894c99e1a7 -r 40a442a5c7fa source/common/param.cpp
>> --- a/source/common/param.cpp   Mon Feb 24 19:19:27 2014 -0600
>> +++ b/source/common/param.cpp   Mon Feb 24 21:17:11 2014 -0800
>> @@ -155,7 +155,7 @@
>>       param->defDispWinRightOffset = 0;
>>       param->defDispWinTopOffset = 0;
>>       param->defDispWinBottomOffset = 0;
>> -    param->bEnableVuiTimingInfoPresentFlag = 0;
>> +    param->bEnableVuiTimingInfoPresentFlag = 1;
> I just sent a patch that enables timing info in the VPS header, so I
> think I'll drop this change for the moment.
>
>>       param->bEnableVuiHrdParametersPresentFlag = 0;
>>       param->bEnableBitstreamRestrictionFlag = 0;
>>       param->bEnableSubPicHrdParamsPresentFlag = 0;
>> @@ -551,15 +551,13 @@
>>       OPT("sar")
>>       {
>>           p->bEnableVuiParametersPresentFlag = 1;
>> -        p->bEnableAspectRatioIdc = atobool(value);
>> -        p->aspectRatioIdc = atoi(value);
>> -    }
>> -    OPT("extended-sar")
>> -    {
>> -        p->bEnableVuiParametersPresentFlag = 1;
>>           p->bEnableAspectRatioIdc = 1;
>> -        p->aspectRatioIdc = X265_EXTENDED_SAR;
>> -        bError |= sscanf(value, "%dx%d", &p->sarWidth, &p->sarHeight) != 2;
>> +        p->aspectRatioIdc = parseName(value, x265_sar_names, bError);
>> +        if (bError)
>> +        {
>> +            p->aspectRatioIdc = X265_EXTENDED_SAR;
>> +            bError = sscanf(value, "%d:%d", &p->sarWidth, &p->sarHeight) != 2;
>> +        }
> Nice.  This conflicts with my input-file refactor; but I can fixup my patch
Thanks.  I replied to your input-file refactor before I saw your 
response here.  No need for you to answer back.
>
>>       }
>>       OPT("overscan")
>>       {
>> @@ -571,121 +569,43 @@
>>               p->bEnableOverscanInfoPresentFlag = 1;
>>               p->bEnableOverscanAppropriateFlag = 1;
>>           }
>> +        else if (!strcmp(value, "undef"))
>> +            p->bEnableOverscanInfoPresentFlag = 0;
>>           else
>> -            p->bEnableOverscanInfoPresentFlag = -1;
>> +            bError = true;
>>       }
>>       OPT("videoformat")
>>       {
>>           p->bEnableVuiParametersPresentFlag = 1;
>>           p->bEnableVideoSignalTypePresentFlag = 1;
>> -        if (!strcmp(value, "component"))
>> -            p->videoFormat = 0;
>> -        else if (!strcmp(value, "pal"))
>> -            p->videoFormat = 1;
>> -        else if (!strcmp(value, "ntsc"))
>> -            p->videoFormat = 2;
>> -        else if (!strcmp(value, "secam"))
>> -            p->videoFormat = 3;
>> -        else if (!strcmp(value, "mac"))
>> -            p->videoFormat = 4;
>> -        else if (!strcmp(value, "undef"))
>> -            p->videoFormat = 5;
>> -        else
>> -            p->videoFormat = -1;
>> +        p->videoFormat = parseName(value, x265_video_format_names, bError);
>>       }
>>       OPT("range")
>>       {
>>           p->bEnableVuiParametersPresentFlag = 1;
>> -        p->bEnableVideoSignalTypePresentFlag = atobool(value);
>> -        p->bEnableVideoFullRangeFlag = atobool(value);
>> +        p->bEnableVideoSignalTypePresentFlag = 1;
>> +        p->bEnableVideoFullRangeFlag = parseName(value, x265_fullrange_names, bError);
>>       }
>>       OPT("colorprim")
>>       {
>>           p->bEnableVuiParametersPresentFlag = 1;
>>           p->bEnableVideoSignalTypePresentFlag = 1;
>>           p->bEnableColorDescriptionPresentFlag = 1;
>> -        if (!strcmp(value, "bt709"))
>> -            p->colorPrimaries = 1;
>> -        else if (!strcmp(value, "undef"))
>> -            p->colorPrimaries = 2;
>> -        else if (!strcmp(value, "bt470m"))
>> -            p->colorPrimaries = 4;
>> -        else if (!strcmp(value, "bt470bg"))
>> -            p->colorPrimaries = 5;
>> -        else if (!strcmp(value, "smpte170m"))
>> -            p->colorPrimaries = 6;
>> -        else if (!strcmp(value, "smpte240m"))
>> -            p->colorPrimaries = 7;
>> -        else if (!strcmp(value, "film"))
>> -            p->colorPrimaries = 8;
>> -        else if (!strcmp(value, "bt2020"))
>> -            p->colorPrimaries = 9;
>> -        else
>> -            p->colorPrimaries = -1;
>> +        p->colorPrimaries = parseName(value, x265_colorprim_names, bError);
>>       }
>>       OPT("transfer")
>>       {
>>           p->bEnableVuiParametersPresentFlag = 1;
>>           p->bEnableVideoSignalTypePresentFlag = 1;
>>           p->bEnableColorDescriptionPresentFlag = 1;
>> -        if (!strcmp(value, "bt709"))
>> -            p->transferCharacteristics = 1;
>> -        else if (!strcmp(value, "undef"))
>> -            p->transferCharacteristics = 2;
>> -        else if (!strcmp(value, "bt470m"))
>> -            p->transferCharacteristics = 4;
>> -        else if (!strcmp(value, "bt470bg"))
>> -            p->transferCharacteristics = 5;
>> -        else if (!strcmp(value, "smpte170m"))
>> -            p->transferCharacteristics = 6;
>> -        else if (!strcmp(value, "smpte240m"))
>> -            p->transferCharacteristics = 7;
>> -        else if (!strcmp(value, "linear"))
>> -            p->transferCharacteristics = 8;
>> -        else if (!strcmp(value, "log100"))
>> -            p->transferCharacteristics = 9;
>> -        else if (!strcmp(value, "log316"))
>> -            p->transferCharacteristics = 10;
>> -        else if (!strcmp(value, "iec61966-2-4"))
>> -            p->transferCharacteristics = 11;
>> -        else if (!strcmp(value, "bt1361e"))
>> -            p->transferCharacteristics = 12;
>> -        else if (!strcmp(value, "iec61966-2-1"))
>> -            p->transferCharacteristics = 13;
>> -        else if (!strcmp(value, "bt2020-10"))
>> -            p->transferCharacteristics = 14;
>> -        else if (!strcmp(value, "bt2020-12"))
>> -            p->transferCharacteristics = 15;
>> -        else
>> -            p->transferCharacteristics = -1;
>> +        p->transferCharacteristics = parseName(value, x265_transfer_names, bError);
>>       }
>>       OPT("colormatrix")
>>       {
>>           p->bEnableVuiParametersPresentFlag = 1;
>>           p->bEnableVideoSignalTypePresentFlag = 1;
>>           p->bEnableColorDescriptionPresentFlag = 1;
>> -        if (!strcmp(value, "GBR"))
>> -            p->matrixCoeffs = 0;
>> -        else if (!strcmp(value, "bt709"))
>> -            p->matrixCoeffs = 1;
>> -        else if (!strcmp(value, "undef"))
>> -            p->matrixCoeffs = 2;
>> -        else if (!strcmp(value, "fcc"))
>> -            p->matrixCoeffs = 4;
>> -        else if (!strcmp(value, "bt470bg"))
>> -            p->matrixCoeffs = 5;
>> -        else if (!strcmp(value, "smpte170m"))
>> -            p->matrixCoeffs = 6;
>> -        else if (!strcmp(value, "smpte240m"))
>> -            p->matrixCoeffs = 7;
>> -        else if (!strcmp(value, "YCgCo"))
>> -            p->matrixCoeffs = 8;
>> -        else if (!strcmp(value, "bt2020nc"))
>> -            p->matrixCoeffs = 9;
>> -        else if (!strcmp(value, "bt2020c"))
>> -            p->matrixCoeffs = 10;
>> -        else
>> -            p->matrixCoeffs = -1;
>> +        p->matrixCoeffs = parseName(value, x265_colmatrix_names, bError);
>>       }
>>       OPT("chromaloc")
>>       {
>> @@ -722,7 +642,7 @@
>>       OPT("nal-hrd")
>>       {
>>           p->bEnableVuiParametersPresentFlag = 1;
>> -        p->bEnableVuiTimingInfoPresentFlag = atobool(value);
>> +        p->bEnableVuiTimingInfoPresentFlag = 1;
>>           p->bEnableVuiHrdParametersPresentFlag = atobool(value);
>>       }
>>       OPT("bitstreamrestriction")
>> @@ -733,7 +653,7 @@
>>       OPT("subpichrd")
>>       {
>>           p->bEnableVuiParametersPresentFlag = 1;
>> -        p->bEnableVuiHrdParametersPresentFlag = atobool(value);
>> +        p->bEnableVuiHrdParametersPresentFlag = 1;
>>           p->bEnableSubPicHrdParamsPresentFlag = atobool(value);
>>       }
>>       else
>> @@ -870,7 +790,7 @@
>>       CHECK(param->aspectRatioIdc == X265_EXTENDED_SAR && param->sarHeight <= 0,
>>             "Sample Aspect Ratio height must be greater than 0");
>>       CHECK(param->videoFormat < 0 || param->videoFormat > 5,
>> -          "Video Format must be Component component,"
>> +          "Video Format must be component,"
>>             " pal, ntsc, secam, mac or undef");
>>       CHECK(param->colorPrimaries < 0
>>             || param->colorPrimaries > 9
>> diff -r 18894c99e1a7 -r 40a442a5c7fa source/x265.cpp
>> --- a/source/x265.cpp   Mon Feb 24 19:19:27 2014 -0600
>> +++ b/source/x265.cpp   Mon Feb 24 21:17:11 2014 -0800
>> @@ -154,11 +154,9 @@
>>       { "cutree",                    no_argument, NULL, 0 },
>>       { "vui",                  no_argument, NULL, 0 },
>>       { "sar",            required_argument, NULL, 0 },
>> -    { "extended-sar",   required_argument, NULL, 0 },
>>       { "overscan",       required_argument, NULL, 0 },
>>       { "videoformat",    required_argument, NULL, 0 },
>> -    { "range",                no_argument, NULL, 0 },
>> -    { "no-range",             no_argument, NULL, 0 },
>> +    { "range",          required_argument, NULL, 0 },
>>       { "colorprim",      required_argument, NULL, 0 },
>>       { "transfer",       required_argument, NULL, 0 },
>>       { "colormatrix",    required_argument, NULL, 0 },
>> @@ -371,21 +369,20 @@
>>       H0("   --hash                        Decoded Picture Hash SEI 0: disabled, 1: MD5, 2: CRC, 3: Checksum. Default %d\n", param->decodedPictureHashSEI);
>>       H0("\nVUI options:\n");
>>       H0("   --vui                         Add Video Useability Information with all fields to the SPS. Default %s\n", OPT(param->bEnableVuiParametersPresentFlag));
>> -    H0("   --sar                         Sample Aspect Ratio, the ratio of width to height of an individual pixel.\n");
>> -    H0("                                 Choose from 0=Unspecified, 1=1:1(\"square\"), 2=12:11, 3=10:11, 4=16:11,\n");
>> +    H0("   --sar <int:int|int>           Sample Aspect Ratio, the ratio of width to height of an individual pixel.\n");
>> +    H0("                                 Choose from 0=undef, 1=1:1(\"square\"), 2=12:11, 3=10:11, 4=16:11,\n");
>>       H0("                                 5=40:33, 6=24:11, 7=20:11, 8=32:11, 9=80:33, 10=18:11, 11=15:11,\n");
>> -    H0("                                 12=64:33, 13=160:99, 14=4:3, 15=3:2, 16=2:1. Default %d\n", param->aspectRatioIdc);
>> -    H0("   --extended-sar                Use a custom Sample Aspect Ratio,[WxH]\n");
>> -    H0("   --overscan <string>           Specify crop overscan setting from undef, show or crop. Default of undef\n");
>> -    H0("   --videoformat <string>        Specify video format from undef, component, pal, ntsc, secam, mac. Default of undef\n");
>> -    H0("   --[no-]range                       Specify black level and range of luma and chroma signals. Default of %s\n", OPT(param->bEnableVideoFullRangeFlag));
>> +    H0("                                 12=64:33, 13=160:99, 14=4:3, 15=3:2, 16=2:1 or custom ratio of <int:int>. Default %d\n", param->aspectRatioIdc);
>> +    H0("   --overscan <string>           Specify crop overscan setting from undef, show or crop. Default undef\n");
>> +    H0("   --videoformat <string>        Specify video format from undef, component, pal, ntsc, secam, mac. Default undef\n");
>> +    H0("   --range <string>              Specify black level and range of luma and chroma signals as full or limited Default limited\n");
>>       H0("   --colorprim <string>          Specify color primaries from undef, bt709, bt470m, bt470bg, smpte170m,\n");
>> -    H0("                                 smpte240m, film, bt2020. Default of undef\n");
>> +    H0("                                 smpte240m, film, bt2020. Default undef\n");
>>       H0("   --transfer <string>           Specify transfer characteristics from undef, bt709, bt470m, bt470bg, smpte170m,\n");
>>       H0("                                 smpte240m, linear, log100, log316, iec61966-2-4, bt1361e, iec61966-2-1,\n");
>> -    H0("                                 bt2020-10, bt2020-12. Default of undef\n");
>> +    H0("                                 bt2020-10, bt2020-12. Default undef\n");
>>       H0("   --colormatrix <string>        Specify color matrix setting from undef, bt709, fcc, bt470bg, smpte170m,\n");
>> -    H0("                                 smpte240m, GBR, YCgCo, bt2020nc, bt2020c\n");
>> +    H0("                                 smpte240m, GBR, YCgCo, bt2020nc, bt2020c. Default undef\n");
>>       H0("   --chromaloc <integer>         Specify chroma sample location (0 to 5). Default of %d\n", param->chromaSampleLocTypeTopField);
>>       H0("   --[no-]fieldseq               Specify that pictures are fields and an SEI timing message\n");
>>       H0("                                 will be added to every access unit. Default %s\n", OPT(param->bEnableFieldSeqFlag));
>> diff -r 18894c99e1a7 -r 40a442a5c7fa source/x265.h
>> --- a/source/x265.h     Mon Feb 24 19:19:27 2014 -0600
>> +++ b/source/x265.h     Mon Feb 24 21:17:11 2014 -0800
>> @@ -184,8 +184,6 @@
>>   #define X265_CPU_NEON            0x0000002  /* ARM NEON */
>>   #define X265_CPU_FAST_NEON_MRC   0x0000004  /* Transfer from NEON to ARM register is fast (Cortex-A9) */
>>
>> -static const char * const x265_motion_est_names[] = { "dia", "hex", "umh", "star", "full", 0 };
>> -
>>   #define X265_MAX_SUBPEL_LEVEL   7
>>
>>   /* Log level */
>> @@ -234,8 +232,6 @@
>>
>>   #define X265_EXTENDED_SAR       255 /* aspect ratio explicitly specified as width:height */
>>
>> -static const char * const x265_source_csp_names[] = { "i400", "i420", "i422", "i444", "nv12", "nv16", 0 };
>> -
>>   typedef struct
>>   {
>>       int planes;
>> @@ -279,6 +275,35 @@
>>       /* new statistic member variables must be added below this line */
>>   } x265_stats;
> no-one seems to mind x264.h defining string lists out to 150 chars, so
> I don't think we need to line wrap them this aggressively.  I'll tidy
> this up and push if you are ok with that.
I am ok with that.
>> +static const char * const x265_motion_est_names[] = { "dia", "hex", "umh",
>> +                                                      "star", "full", 0 };
>> +static const char * const x265_source_csp_names[] = { "i400", "i420", "i422",
>> +                                                      "i444", "nv12", "nv16", 0 };
>> +static const char * const x265_video_format_names[] = { "component", "pal",
>> +                                                        "ntsc", "secam", "mac",
>> +                                                        "undef", 0 };
>> +static const char * const x265_fullrange_names[] = { "limited", "full", 0 };
>> +static const char * const x265_colorprim_names[] = { "", "bt709", "undef", "",
>> +                                                     "bt470m", "bt470bg",
>> +                                                     "smpte170m", "smpte240m",
>> +                                                     "film", "bt2020", 0 };
>> +static const char * const x265_transfer_names[] = { "", "bt709", "undef", "",
>> +                                                    "bt470m", "bt470bg",
>> +                                                    "smpte170m", "smpte240m",
>> +                                                    "linear", "log100",
>> +                                                    "log316", "iec61966-2-4",
>> +                                                    "bt1361e", "iec61966-2-1",
>> +                                                    "bt2020-10", "bt2020-12", 0 };
>> +static const char * const x265_colmatrix_names[] = { "GBR", "bt709", "undef",
>> +                                                     "", "fcc", "bt470bg",
>> +                                                     "smpte170m", "smpte240m",
>> +                                                     "YCgCo", "bt2020nc",
>> +                                                     "bt2020c", 0 };
>> +static const char * const x265_sar_names[] = { "undef", "1:1", "12:11", "10:11",
>> +                                               "16:11", "40:33", "24:11", "20:11",
>> +                                               "32:11", "80:33", "18:11", "15:11",
>> +                                               "64:33", "160:99", "4:3", "3:2", "2:1" };
>> +
>>   /* x265 input parameters
>>    *
>>    * For version safety you may use x265_param_alloc/free() to manage the
>> _______________________________________________
>> x265-devel mailing list
>> x265-devel at videolan.org
>> https://mailman.videolan.org/listinfo/x265-devel
>
>



More information about the x265-devel mailing list