[x265] [PATCH] Add x265 API defination to api.cpp

Sagar Kotecha sagar at multicorewareinc.com
Tue Feb 25 10:25:50 CET 2014


Sent new patch

With Regards,
Sagar


On Tue, Feb 25, 2014 at 2:37 PM, Deepthi Nandakumar <
deepthi at multicorewareinc.com> wrote:

> Ok, looks good except x265_ssim should not be extern, and should be a part
> of common.cpp and not api.cpp.
>
>
> On Tue, Feb 25, 2014 at 2:33 PM, <sagar at multicorewareinc.com> wrote:
>
>> # HG changeset patch
>> # User Sagar Kotecha <sagar at multicorewareinc.com>
>> # Date 1393318766 -19800
>> #      Tue Feb 25 14:29:26 2014 +0530
>> # Node ID 504c2a959e5815cb3020033289137f64cb458aee
>> # Parent  a36a669d09e89332dd91817afdf139853ba3ad03
>> Add x265 API defination to api.cpp
>>
>> diff -r a36a669d09e8 -r 504c2a959e58 source/common/common.cpp
>> --- a/source/common/common.cpp  Tue Feb 25 02:22:06 2014 -0600
>> +++ b/source/common/common.cpp  Tue Feb 25 14:29:26 2014 +0530
>> @@ -134,23 +134,3 @@
>>      va_end(arg);
>>  }
>>
>> -extern "C"
>> -x265_picture *x265_picture_alloc()
>> -{
>> -    return (x265_picture*)x265_malloc(sizeof(x265_picture));
>> -}
>> -
>> -extern "C"
>> -void x265_picture_init(x265_param *param, x265_picture *pic)
>> -{
>> -    memset(pic, 0, sizeof(x265_picture));
>> -
>> -    pic->bitDepth = param->internalBitDepth;
>> -    pic->colorSpace = param->internalCsp;
>> -}
>> -
>> -extern "C"
>> -void x265_picture_free(x265_picture *p)
>> -{
>> -    return x265_free(p);
>> -}
>> diff -r a36a669d09e8 -r 504c2a959e58 source/encoder/CMakeLists.txt
>> --- a/source/encoder/CMakeLists.txt     Tue Feb 25 02:22:06 2014 -0600
>> +++ b/source/encoder/CMakeLists.txt     Tue Feb 25 14:29:26 2014 +0530
>> @@ -58,4 +58,5 @@
>>      compress.cpp
>>      reference.cpp reference.h
>>      encoder.cpp encoder.h
>> +       api.cpp
>>      weightPrediction.cpp)
>> diff -r a36a669d09e8 -r 504c2a959e58 source/encoder/api.cpp
>> --- /dev/null   Thu Jan 01 00:00:00 1970 +0000
>> +++ b/source/encoder/api.cpp    Tue Feb 25 14:29:26 2014 +0530
>> @@ -0,0 +1,199 @@
>>
>> +/*****************************************************************************
>> + * Copyright (C) 2013 x265 project
>> + *
>> + * Authors: Steve Borho <steve at borho.org>
>> + *
>> + * This program is free software; you can redistribute it and/or modify
>> + * it under the terms of the GNU General Public License as published by
>> + * the Free Software Foundation; either version 2 of the License, or
>> + * (at your option) any later version.
>> + *
>> + * This program is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>> + * GNU General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU General Public License
>> + * along with this program; if not, write to the Free Software
>> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111,
>> USA.
>> + *
>> + * This program is also available under a commercial proprietary license.
>> + * For more information, contact us at licensing at multicorewareinc.com.
>> +
>> *****************************************************************************/
>> +
>> +#include "TLibCommon/CommonDef.h"
>> +#include "param.h"
>> +#include "encoder.h"
>> +#include "frameencoder.h"
>> +
>> +using namespace x265;
>> +
>> +extern "C"
>> +x265_encoder *x265_encoder_open(x265_param *param)
>> +{
>> +    x265_setup_primitives(param, -1);  // -1 means auto-detect if
>> uninitialized
>> +
>> +    if (x265_check_params(param))
>> +        return NULL;
>> +
>> +    if (x265_set_globals(param))
>> +        return NULL;
>> +
>> +    Encoder *encoder = new Encoder;
>> +    if (encoder)
>> +    {
>> +        // these may change params for auto-detect, etc
>> +        encoder->determineLevelAndProfile(param);
>> +        encoder->configure(param);
>> +
>> +        // save a copy of final parameters in TEncCfg
>> +        memcpy(&encoder->param, param, sizeof(*param));
>> +
>> +        x265_print_params(param);
>> +        encoder->create();
>> +        encoder->init();
>> +    }
>> +
>> +    return encoder;
>> +}
>> +
>> +extern "C"
>> +int x265_encoder_headers(x265_encoder *enc, x265_nal **pp_nal, uint32_t
>> *pi_nal)
>> +{
>> +    if (!pp_nal || !enc)
>> +        return 0;
>> +
>> +    Encoder *encoder = static_cast<Encoder*>(enc);
>> +
>> +    int ret = 0;
>> +    NALUnitEBSP *nalunits[MAX_NAL_UNITS] = { 0, 0, 0, 0, 0 };
>> +    if (!encoder->getStreamHeaders(nalunits))
>> +    {
>> +        int nalcount = encoder->extractNalData(nalunits);
>> +        *pp_nal = &encoder->m_nals[0];
>> +        if (pi_nal) *pi_nal = nalcount;
>> +    }
>> +    else if (pi_nal)
>> +    {
>> +        *pi_nal = 0;
>> +        ret = -1;
>> +    }
>> +
>> +    for (int i = 0; i < MAX_NAL_UNITS; i++)
>> +    {
>> +        if (nalunits[i])
>> +        {
>> +            free(nalunits[i]->m_nalUnitData);
>> +            X265_FREE(nalunits[i]);
>> +        }
>> +    }
>> +
>> +    return ret;
>> +}
>> +
>> +extern "C"
>> +int x265_encoder_encode(x265_encoder *enc, x265_nal **pp_nal, uint32_t
>> *pi_nal, x265_picture *pic_in, x265_picture *pic_out)
>> +{
>> +    if (!enc)
>> +        return -1;
>> +
>> +    Encoder *encoder = static_cast<Encoder*>(enc);
>> +    NALUnitEBSP *nalunits[MAX_NAL_UNITS] = { 0, 0, 0, 0, 0 };
>> +    int numEncoded = encoder->encode(!pic_in, pic_in, pic_out, nalunits);
>> +
>> +    if (pp_nal && numEncoded > 0)
>> +    {
>> +        int nalcount = encoder->extractNalData(nalunits);
>> +        *pp_nal = &encoder->m_nals[0];
>> +        if (pi_nal) *pi_nal = nalcount;
>> +    }
>> +    else if (pi_nal)
>> +        *pi_nal = 0;
>> +
>> +    for (int i = 0; i < MAX_NAL_UNITS; i++)
>> +    {
>> +        if (nalunits[i])
>> +        {
>> +            free(nalunits[i]->m_nalUnitData);
>> +            X265_FREE(nalunits[i]);
>> +        }
>> +    }
>> +
>> +    return numEncoded;
>> +}
>> +
>> +EXTERN_CYCLE_COUNTER(ME);
>> +
>> +extern "C"
>> +void x265_encoder_get_stats(x265_encoder *enc, x265_stats *outputStats,
>> uint32_t statsSizeBytes)
>> +{
>> +    if (enc && outputStats)
>> +    {
>> +        Encoder *encoder = static_cast<Encoder*>(enc);
>> +        encoder->fetchStats(outputStats, statsSizeBytes);
>> +    }
>> +}
>> +
>> +extern "C"
>> +void x265_encoder_log(x265_encoder* enc, int argc, char **argv)
>> +{
>> +    if (enc)
>> +    {
>> +        Encoder *encoder = static_cast<Encoder*>(enc);
>> +        encoder->writeLog(argc, argv);
>> +    }
>> +}
>> +
>> +extern "C"
>> +void x265_encoder_close(x265_encoder *enc)
>> +{
>> +    if (enc)
>> +    {
>> +        Encoder *encoder = static_cast<Encoder*>(enc);
>> +
>> +        REPORT_CYCLE_COUNTER(ME);
>> +
>> +        encoder->printSummary();
>> +        encoder->destroy();
>> +        delete encoder;
>> +    }
>> +}
>> +
>> +extern "C"
>> +void x265_cleanup(void)
>> +{
>> +    destroyROM();
>> +    BitCost::destroy();
>> +}
>> +
>> +extern "C"
>> +double x265_ssim(double ssim)
>> +{
>> +    double inv_ssim = 1 - ssim;
>> +
>> +    if (inv_ssim <= 0.0000000001) /* Max 100dB */
>> +        return 100;
>> +
>> +    return -10.0 * log10(inv_ssim);
>> +}
>> +
>> +extern "C"
>> +x265_picture *x265_picture_alloc()
>> +{
>> +    return (x265_picture*)x265_malloc(sizeof(x265_picture));
>> +}
>> +
>> +extern "C"
>> +void x265_picture_init(x265_param *param, x265_picture *pic)
>> +{
>> +    memset(pic, 0, sizeof(x265_picture));
>> +
>> +    pic->bitDepth = param->internalBitDepth;
>> +    pic->colorSpace = param->internalCsp;
>> +}
>> +
>> +extern "C"
>> +void x265_picture_free(x265_picture *p)
>> +{
>> +    return x265_free(p);
>> +}
>> \ No newline at end of file
>> diff -r a36a669d09e8 -r 504c2a959e58 source/encoder/encoder.cpp
>> --- a/source/encoder/encoder.cpp        Tue Feb 25 02:22:06 2014 -0600
>> +++ b/source/encoder/encoder.cpp        Tue Feb 25 14:29:26 2014 +0530
>> @@ -1587,151 +1587,3 @@
>>      return nalcount;
>>  }
>>
>> -extern "C"
>> -x265_encoder *x265_encoder_open(x265_param *param)
>> -{
>> -    x265_setup_primitives(param, -1);  // -1 means auto-detect if
>> uninitialized
>> -
>> -    if (x265_check_params(param))
>> -        return NULL;
>> -
>> -    if (x265_set_globals(param))
>> -        return NULL;
>> -
>> -    Encoder *encoder = new Encoder;
>> -    if (encoder)
>> -    {
>> -        // these may change params for auto-detect, etc
>> -        encoder->determineLevelAndProfile(param);
>> -        encoder->configure(param);
>> -
>> -        // save a copy of final parameters in TEncCfg
>> -        memcpy(&encoder->param, param, sizeof(*param));
>> -
>> -        x265_print_params(param);
>> -        encoder->create();
>> -        encoder->init();
>> -    }
>> -
>> -    return encoder;
>> -}
>> -
>> -extern "C"
>> -int x265_encoder_headers(x265_encoder *enc, x265_nal **pp_nal, uint32_t
>> *pi_nal)
>> -{
>> -    if (!pp_nal || !enc)
>> -        return 0;
>> -
>> -    Encoder *encoder = static_cast<Encoder*>(enc);
>> -
>> -    int ret = 0;
>> -    NALUnitEBSP *nalunits[MAX_NAL_UNITS] = { 0, 0, 0, 0, 0 };
>> -    if (!encoder->getStreamHeaders(nalunits))
>> -    {
>> -        int nalcount = encoder->extractNalData(nalunits);
>> -        *pp_nal = &encoder->m_nals[0];
>> -        if (pi_nal) *pi_nal = nalcount;
>> -    }
>> -    else if (pi_nal)
>> -    {
>> -        *pi_nal = 0;
>> -        ret = -1;
>> -    }
>> -
>> -    for (int i = 0; i < MAX_NAL_UNITS; i++)
>> -    {
>> -        if (nalunits[i])
>> -        {
>> -            free(nalunits[i]->m_nalUnitData);
>> -            X265_FREE(nalunits[i]);
>> -        }
>> -    }
>> -
>> -    return ret;
>> -}
>> -
>> -extern "C"
>> -int x265_encoder_encode(x265_encoder *enc, x265_nal **pp_nal, uint32_t
>> *pi_nal, x265_picture *pic_in, x265_picture *pic_out)
>> -{
>> -    if (!enc)
>> -        return -1;
>> -
>> -    Encoder *encoder = static_cast<Encoder*>(enc);
>> -    NALUnitEBSP *nalunits[MAX_NAL_UNITS] = { 0, 0, 0, 0, 0 };
>> -    int numEncoded = encoder->encode(!pic_in, pic_in, pic_out, nalunits);
>> -
>> -    if (pp_nal && numEncoded > 0)
>> -    {
>> -        int nalcount = encoder->extractNalData(nalunits);
>> -        *pp_nal = &encoder->m_nals[0];
>> -        if (pi_nal) *pi_nal = nalcount;
>> -    }
>> -    else if (pi_nal)
>> -        *pi_nal = 0;
>> -
>> -    for (int i = 0; i < MAX_NAL_UNITS; i++)
>> -    {
>> -        if (nalunits[i])
>> -        {
>> -            free(nalunits[i]->m_nalUnitData);
>> -            X265_FREE(nalunits[i]);
>> -        }
>> -    }
>> -
>> -    return numEncoded;
>> -}
>> -
>> -EXTERN_CYCLE_COUNTER(ME);
>> -
>> -extern "C"
>> -void x265_encoder_get_stats(x265_encoder *enc, x265_stats *outputStats,
>> uint32_t statsSizeBytes)
>> -{
>> -    if (enc && outputStats)
>> -    {
>> -        Encoder *encoder = static_cast<Encoder*>(enc);
>> -        encoder->fetchStats(outputStats, statsSizeBytes);
>> -    }
>> -}
>> -
>> -extern "C"
>> -void x265_encoder_log(x265_encoder* enc, int argc, char **argv)
>> -{
>> -    if (enc)
>> -    {
>> -        Encoder *encoder = static_cast<Encoder*>(enc);
>> -        encoder->writeLog(argc, argv);
>> -    }
>> -}
>> -
>> -extern "C"
>> -void x265_encoder_close(x265_encoder *enc)
>> -{
>> -    if (enc)
>> -    {
>> -        Encoder *encoder = static_cast<Encoder*>(enc);
>> -
>> -        REPORT_CYCLE_COUNTER(ME);
>> -
>> -        encoder->printSummary();
>> -        encoder->destroy();
>> -        delete encoder;
>> -    }
>> -}
>> -
>> -extern "C"
>> -void x265_cleanup(void)
>> -{
>> -    destroyROM();
>> -    BitCost::destroy();
>> -}
>> -
>> -extern "C"
>> -double x265_ssim(double ssim)
>> -{
>> -    double inv_ssim = 1 - ssim;
>> -
>> -    if (inv_ssim <= 0.0000000001) /* Max 100dB */
>> -        return 100;
>> -
>> -    return -10.0 * log10(inv_ssim);
>> -}
>> _______________________________________________
>> x265-devel mailing list
>> x265-devel at videolan.org
>> https://mailman.videolan.org/listinfo/x265-devel
>>
>
>
> _______________________________________________
> x265-devel mailing list
> x265-devel at videolan.org
> https://mailman.videolan.org/listinfo/x265-devel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20140225/fe3e0692/attachment-0001.html>


More information about the x265-devel mailing list