[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