[x265] [PATCH] cli: refactor handling of input file parameters
dave
dtyx265 at gmail.com
Tue Feb 25 17:43:37 CET 2014
On 02/25/2014 08:00 AM, Steve Borho wrote:
> # HG changeset patch
> # User Steve Borho <steve at borho.org>
> # Date 1393303499 21600
> # Mon Feb 24 22:44:59 2014 -0600
> # Node ID 651c0bc9e280282de1d1c9975d25fa34de7b25ef
> # Parent 5e375c097de471c3824fd5ce3568325de746fa78
> cli: refactor handling of input file parameters
>
> * allow y4m header to provide aspect ratio
> * allow user to override Y4M aspect ratio or frame rate
> * allow user to provide data possibly missing from Y4M header
> * do not clamp framesToBeEncoded to predicted file size (stop at EOF)
>
> diff -r 5e375c097de4 -r 651c0bc9e280 source/common/param.cpp
> --- a/source/common/param.cpp Mon Feb 24 23:22:55 2014 -0600
> +++ b/source/common/param.cpp Mon Feb 24 22:44:59 2014 -0600
> @@ -671,6 +671,65 @@
> namespace x265 {
> // internal encoder functions
>
> +static const int fixedRatios[][2] =
> +{
> + { 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 },
> +};
This array is off by one. aspect_ratio_idc = 0 is valid and signifies
an unspecified sar.
> +void setParamAspectRatio(x265_param *p, int width, int height)
> +{
> + p->bEnableVuiParametersPresentFlag = 1;
> + p->bEnableAspectRatioIdc = 1;
> + p->aspectRatioIdc = X265_EXTENDED_SAR;
> + p->sarWidth = width;
> + p->sarHeight = height;
> + for (size_t i = 0; i < sizeof(fixedRatios) / sizeof(fixedRatios[0]); i++)
> + {
> + if (width == fixedRatios[i][0] && height == fixedRatios[i][1])
> + {
> + p->aspectRatioIdc = (int)i + 1;
> + return;
> + }
> + }
> +}
> +
> +void getParamAspectRatio(x265_param *p, int& width, int& height)
> +{
> + if (!p->bEnableVuiParametersPresentFlag || !p->bEnableAspectRatioIdc || !p->aspectRatioIdc)
> + {
> + width = height = 0;
> + }
> + else if ((size_t)p->aspectRatioIdc <= sizeof(fixedRatios) / sizeof(fixedRatios[0]))
> + {
> + width = fixedRatios[p->aspectRatioIdc - 1][0];
> + height = fixedRatios[p->aspectRatioIdc - 1][1];
> + }
> + else if (p->aspectRatioIdc == X265_EXTENDED_SAR)
> + {
> + width = p->sarWidth;
> + height = p->sarHeight;
> + }
> + else
> + {
> + width = height = 0;
> + }
> +}
> +
> static inline int _confirm(x265_param *param, bool bflag, const char* message)
> {
> if (!bflag)
> diff -r 5e375c097de4 -r 651c0bc9e280 source/common/param.h
> --- a/source/common/param.h Mon Feb 24 23:22:55 2014 -0600
> +++ b/source/common/param.h Mon Feb 24 22:44:59 2014 -0600
> @@ -30,6 +30,8 @@
> int x265_set_globals(x265_param *param);
> void x265_print_params(x265_param *param);
> char* x265_param2string(x265_param *param);
> +void setParamAspectRatio(x265_param *p, int width, int height);
> +void getParamAspectRatio(x265_param *p, int& width, int& height);
>
> }
>
> diff -r 5e375c097de4 -r 651c0bc9e280 source/input/input.cpp
> --- a/source/input/input.cpp Mon Feb 24 23:22:55 2014 -0600
> +++ b/source/input/input.cpp Mon Feb 24 22:44:59 2014 -0600
> @@ -28,12 +28,12 @@
>
> using namespace x265;
>
> -Input* Input::open(const char *filename, uint32_t inputBitDepth, bool bForceY4m)
> +Input* Input::open(InputFileInfo& info, bool bForceY4m)
> {
> - const char * s = strrchr(filename, '.');
> + const char * s = strrchr(info.filename, '.');
>
> if (bForceY4m || (s && !strcmp(s, ".y4m")))
> - return new Y4MInput(filename, inputBitDepth);
> + return new Y4MInput(info);
> else
> - return new YUVInput(filename, inputBitDepth);
> + return new YUVInput(info);
> }
> diff -r 5e375c097de4 -r 651c0bc9e280 source/input/input.h
> --- a/source/input/input.h Mon Feb 24 23:22:55 2014 -0600
> +++ b/source/input/input.h Mon Feb 24 22:44:59 2014 -0600
> @@ -36,6 +36,24 @@
> namespace x265 {
> // private x265 namespace
>
> +struct InputFileInfo
> +{
> + /* possibly user-supplied, possibly read from file header */
> + int width;
> + int height;
> + int csp;
> + int depth;
> + int fpsNum;
> + int fpsDenom;
> + int sarWidth;
> + int sarHeight;
> + int frameCount;
> +
> + /* user supplied */
> + int skipFrames;
> + const char *filename;
> +};
> +
> class Input
> {
> protected:
> @@ -46,36 +64,18 @@
>
> Input() {}
>
> - static Input* open(const char *filename, uint32_t inputBitDepth, bool bForceY4m);
> -
> - virtual void setDimensions(int width, int height) = 0;
> -
> - virtual void setBitDepth(uint32_t bitDepth) = 0;
> -
> - virtual void setColorSpace(int csp) = 0;
> -
> - virtual void getRate(uint32_t& num, uint32_t& denom) const = 0;
> -
> - virtual int getWidth() const = 0;
> -
> - virtual int getHeight() const = 0;
> -
> - virtual int getColorSpace() const = 0;
> + static Input* open(InputFileInfo& info, bool bForceY4m);
>
> virtual void startReader() = 0;
>
> virtual void release() = 0;
>
> - virtual void skipFrames(uint32_t numFrames) = 0;
> -
> virtual bool readPicture(x265_picture& pic) = 0;
>
> virtual bool isEof() const = 0;
>
> virtual bool isFail() = 0;
>
> - virtual int guessFrameCount() = 0;
> -
> virtual const char *getName() const = 0;
> };
> }
> diff -r 5e375c097de4 -r 651c0bc9e280 source/input/y4m.cpp
> --- a/source/input/y4m.cpp Mon Feb 24 23:22:55 2014 -0600
> +++ b/source/input/y4m.cpp Mon Feb 24 22:44:59 2014 -0600
> @@ -41,7 +41,9 @@
> using namespace x265;
> using namespace std;
>
> -Y4MInput::Y4MInput(const char *filename, uint32_t /*inputBitDepth*/)
> +static const char header[] = "FRAME";
> +
> +Y4MInput::Y4MInput(InputFileInfo& info)
> {
> for (uint32_t i = 0; i < QUEUE_SIZE; i++)
> {
> @@ -49,10 +51,17 @@
> }
>
> head = tail = 0;
> - colorSpace = X265_CSP_I420;
> +
> + colorSpace = info.csp;
> + sarWidth = info.sarWidth;
> + sarHeight = info.sarHeight;
> + width = info.width;
> + height = info.height;
> + rateNum = info.fpsNum;
> + rateDenom = info.fpsDenom;
>
> ifs = NULL;
> - if (!strcmp(filename, "-"))
> + if (!strcmp(info.filename, "-"))
> {
> ifs = &cin;
> #if _WIN32
> @@ -60,24 +69,47 @@
> #endif
> }
> else
> - ifs = new ifstream(filename, ios::binary | ios::in);
> + ifs = new ifstream(info.filename, ios::binary | ios::in);
>
> threadActive = false;
> - if (ifs && ifs->good())
> + if (ifs && ifs->good() && parseHeader())
> {
> - if (parseHeader())
> + threadActive = true;
> + for (uint32_t i = 0; i < QUEUE_SIZE; i++)
> {
> - threadActive = true;
> - for (uint32_t i = 0; i < QUEUE_SIZE; i++)
> - {
> - pictureAlloc(i);
> - }
> + pictureAlloc(i);
> }
> }
> - if (!threadActive && ifs && ifs != &cin)
> + if (!threadActive)
> {
> - delete ifs;
> + if (ifs && ifs != &cin)
> + delete ifs;
> ifs = NULL;
> + return;
> + }
> +
> + info.width = width;
> + info.height = height;
> + info.sarHeight = sarHeight;
> + info.sarWidth = sarWidth;
> + info.fpsNum = rateNum;
> + info.fpsDenom = rateDenom;
> + info.csp = colorSpace;
> + info.depth = 8;
> + info.frameCount = guessFrameCount();
> +
> + if (info.skipFrames)
> + {
> + size_t frameSize = strlen(header) + 1;
> + for (int i = 0; i < x265_cli_csps[colorSpace].planes; i++)
> + {
> + frameSize += (size_t)((width >> x265_cli_csps[colorSpace].width[i]) * (height >> x265_cli_csps[colorSpace].height[i]));
> + }
> +
> + for (int i = 0; i < info.skipFrames; i++)
> + {
> + ifs->ignore(frameSize);
> + }
> }
> }
>
> @@ -117,11 +149,6 @@
> if (!ifs)
> return false;
>
> - width = 0;
> - height = 0;
> - rateNum = 0;
> - rateDenom = 0;
> - colorSpace = X265_CSP_I420;
> int csp = 0;
>
> while (!ifs->eof())
> @@ -221,7 +248,37 @@
>
> break;
>
> + case 'A':
> + sarWidth = 0;
> + sarHeight = 0;
> + while (!ifs->eof())
> + {
> + c = ifs->get();
> + if (c == ':')
> + {
> + while (!ifs->eof())
> + {
> + c = ifs->get();
> + if (c == ' ' || c == '\n')
> + {
> + break;
> + }
> + else
> + sarHeight = sarHeight * 10 + (c - '0');
> + }
> +
> + break;
> + }
> + else
> + {
> + sarWidth = sarWidth * 10 + (c - '0');
> + }
> + }
> +
> + break;
> +
> case 'C':
> + csp = 0;
> while (!ifs->eof())
> {
> c = ifs->get();
> @@ -267,8 +324,6 @@
> return true;
> }
>
> -static const char header[] = "FRAME";
> -
> int Y4MInput::guessFrameCount()
> {
> if (!ifs || ifs == &cin)
> @@ -292,23 +347,6 @@
> return (int)((size - cur) / frameSize);
> }
>
> -void Y4MInput::skipFrames(uint32_t numFrames)
> -{
> - if (ifs && numFrames)
> - {
> - size_t frameSize = strlen(header) + 1;
> - for (int i = 0; i < x265_cli_csps[colorSpace].planes; i++)
> - {
> - frameSize += (size_t)((width >> x265_cli_csps[colorSpace].width[i]) * (height >> x265_cli_csps[colorSpace].height[i]));
> - }
> -
> - for (uint32_t i = 0; i < numFrames; i++)
> - {
> - ifs->ignore(frameSize);
> - }
> - }
> -}
> -
> void Y4MInput::startReader()
> {
> #if ENABLE_THREADING
> diff -r 5e375c097de4 -r 651c0bc9e280 source/input/y4m.h
> --- a/source/input/y4m.h Mon Feb 24 23:22:55 2014 -0600
> +++ b/source/input/y4m.h Mon Feb 24 22:44:59 2014 -0600
> @@ -41,11 +41,15 @@
>
> uint32_t rateDenom;
>
> + uint32_t sarWidth;
> +
> + uint32_t sarHeight;
> +
> int width;
>
> int height;
>
> - int colorSpace; ///< source Color Space Parameter
> + int colorSpace;
>
> uint32_t plane_size[3];
>
> @@ -69,25 +73,21 @@
>
> bool parseHeader();
>
> + void pictureAlloc(int index);
> +
> + int guessFrameCount();
> +
> + void threadMain();
> +
> + bool populateFrameQueue();
> +
> public:
>
> - Y4MInput(const char *filename, uint32_t inputBitDepth);
> + Y4MInput(InputFileInfo& info);
>
> virtual ~Y4MInput();
>
> - void setDimensions(int, int) { /* ignore, warn */ }
> -
> - void setBitDepth(uint32_t) { /* ignore, warn */ }
> -
> - void setColorSpace(int) { /* ignore, warn */ }
> -
> - void getRate(uint32_t& num, uint32_t& denom) const { num = rateNum; denom = rateDenom; }
> -
> - int getWidth() const { return width; }
> -
> - int getHeight() const { return height; }
> -
> - int getColorSpace() const { return colorSpace; }
> + void release();
>
> bool isEof() const { return ifs && ifs->eof(); }
>
> @@ -95,20 +95,8 @@
>
> void startReader();
>
> - void release();
> -
> - int guessFrameCount();
> -
> - void skipFrames(uint32_t numFrames);
> -
> bool readPicture(x265_picture&);
>
> - void pictureAlloc(int index);
> -
> - void threadMain();
> -
> - bool populateFrameQueue();
> -
> const char *getName() const { return "y4m"; }
> };
> }
> diff -r 5e375c097de4 -r 651c0bc9e280 source/input/yuv.cpp
> --- a/source/input/yuv.cpp Mon Feb 24 23:22:55 2014 -0600
> +++ b/source/input/yuv.cpp Mon Feb 24 22:44:59 2014 -0600
> @@ -42,7 +42,7 @@
> using namespace x265;
> using namespace std;
>
> -YUVInput::YUVInput(const char *filename, uint32_t inputBitDepth)
> +YUVInput::YUVInput(InputFileInfo& info)
> {
> for (int i = 0; i < QUEUE_SIZE; i++)
> {
> @@ -51,11 +51,21 @@
>
> head = 0;
> tail = 0;
> - depth = inputBitDepth;
> - pixelbytes = inputBitDepth > 8 ? 2 : 1;
> - width = height = framesize = 0;
> + framesize = 0;
> + depth = info.depth;
> + width = info.width;
> + height = info.height;
> + colorSpace = info.csp;
> threadActive = false;
> - if (!strcmp(filename, "-"))
> + ifs = NULL;
> +
> + if (width == 0 || height == 0 || info.fpsNum == 0 || info.fpsDenom == 0)
> + {
> + x265_log(NULL, X265_LOG_ERROR, "yuv: width, height, and FPS must be specified\n");
> + return;
> + }
> +
> + if (!strcmp(info.filename, "-"))
> {
> ifs = &cin;
> #if _WIN32
> @@ -63,14 +73,43 @@
> #endif
> }
> else
> - ifs = new ifstream(filename, ios::binary | ios::in);
> + ifs = new ifstream(info.filename, ios::binary | ios::in);
>
> if (ifs && ifs->good())
> threadActive = true;
> - else if (ifs && ifs != &cin)
> + else
> {
> - delete ifs;
> + if (ifs && ifs != &cin)
> + delete ifs;
> ifs = NULL;
> + return;
> + }
> +
> + pixelbytes = depth > 8 ? 2 : 1;
> + for (int i = 0; i < x265_cli_csps[colorSpace].planes; i++)
> + {
> + uint32_t w = width >> x265_cli_csps[colorSpace].width[i];
> + uint32_t h = height >> x265_cli_csps[colorSpace].height[i];
> + framesize += w * h * pixelbytes;
> + }
> +
> + for (uint32_t i = 0; i < QUEUE_SIZE; i++)
> + {
> + buf[i] = new char[framesize];
> + if (buf[i] == NULL)
> + {
> + x265_log(NULL, X265_LOG_ERROR, "yuv: buffer allocation failure, aborting\n");
> + threadActive = false;
> + return;
> + }
> + }
> + info.frameCount = guessFrameCount();
> + if (info.skipFrames)
> + {
> + for (int i = 0; i < info.skipFrames; i++)
> + {
> + ifs->ignore(framesize);
> + }
> }
> }
>
> @@ -92,32 +131,8 @@
> delete this;
> }
>
> -void YUVInput::init()
> -{
> - if (!framesize)
> - {
> - for (int i = 0; i < x265_cli_csps[colorSpace].planes; i++)
> - {
> - uint32_t w = width >> x265_cli_csps[colorSpace].width[i];
> - uint32_t h = height >> x265_cli_csps[colorSpace].height[i];
> - framesize += w * h * pixelbytes;
> - }
> -
> - for (uint32_t i = 0; i < QUEUE_SIZE; i++)
> - {
> - buf[i] = new char[framesize];
> - if (buf[i] == NULL)
> - {
> - x265_log(NULL, X265_LOG_ERROR, "yuv: buffer allocation failure, aborting\n");
> - threadActive = false;
> - }
> - }
> - }
> -}
> -
> int YUVInput::guessFrameCount()
> {
> - init();
> if (!ifs || ifs == &cin) return -1;
>
> ifstream::pos_type cur = ifs->tellg();
> @@ -134,21 +149,8 @@
> return (int)((size - cur) / framesize);
> }
>
> -void YUVInput::skipFrames(uint32_t numFrames)
> -{
> - init();
> - if (ifs)
> - {
> - for (uint32_t i = 0; i < numFrames; i++)
> - {
> - ifs->ignore(framesize);
> - }
> - }
> -}
> -
> void YUVInput::startReader()
> {
> - init();
> #if ENABLE_THREADING
> if (ifs && threadActive)
> start();
> diff -r 5e375c097de4 -r 651c0bc9e280 source/input/yuv.h
> --- a/source/input/yuv.h Mon Feb 24 23:22:55 2014 -0600
> +++ b/source/input/yuv.h Mon Feb 24 22:44:59 2014 -0600
> @@ -65,27 +65,19 @@
>
> std::istream *ifs;
>
> - void init();
> + int guessFrameCount();
> +
> + void threadMain();
> +
> + bool populateFrameQueue();
>
> public:
>
> - YUVInput(const char *filename, uint32_t inputBitDepth);
> + YUVInput(InputFileInfo& info);
>
> virtual ~YUVInput();
>
> - void setDimensions(int w, int h) { width = w; height = h; }
> -
> - void setColorSpace(int csp) { colorSpace = csp; }
> -
> - int getColorSpace() const { return colorSpace; }
> -
> - void setBitDepth(uint32_t bitDepth) { depth = bitDepth; }
> -
> - void getRate(uint32_t&, uint32_t&) const { }
> -
> - int getWidth() const { return width; }
> -
> - int getHeight() const { return height; }
> + void release();
>
> bool isEof() const { return ifs && ifs->eof(); }
>
> @@ -93,18 +85,8 @@
>
> void startReader();
>
> - void release();
> -
> - int guessFrameCount();
> -
> - void skipFrames(uint32_t numFrames);
> -
> bool readPicture(x265_picture&);
>
> - void threadMain();
> -
> - bool populateFrameQueue();
> -
> const char *getName() const { return "yuv"; }
> };
> }
> diff -r 5e375c097de4 -r 651c0bc9e280 source/x265.cpp
> --- a/source/x265.cpp Mon Feb 24 23:22:55 2014 -0600
> +++ b/source/x265.cpp Mon Feb 24 22:44:59 2014 -0600
> @@ -524,65 +524,85 @@
> x265_log(param, X265_LOG_ERROR, "input or output file not specified, try -V for help\n");
> return true;
> }
> - this->input = Input::open(inputfn, inputBitDepth, bForceY4m);
> +
> +#if HIGH_BIT_DEPTH
> + if (param->internalBitDepth != 10)
> + {
> + x265_log(param, X265_LOG_ERROR, "Only bit depths of 10 are supported in this build\n");
> + return true;
> + }
> +#else
> + if (param->internalBitDepth != 8)
> + {
> + x265_log(param, X265_LOG_ERROR, "Only bit depths of 8 are supported in this build\n");
> + return true;
> + }
> +#endif // if HIGH_BIT_DEPTH
> +
> + InputFileInfo info;
> + info.filename = inputfn;
> + info.depth = inputBitDepth;
> + info.csp = param->internalCsp;
> + info.width = param->sourceWidth;
> + info.height = param->sourceHeight;
> + info.fpsNum = param->fpsNum;
> + info.fpsDenom = param->fpsDenom;
> + info.sarWidth = param->sarWidth;
> + info.sarHeight = param->sarHeight;
> + info.skipFrames = seek;
> + info.frameCount = 0;
> + getParamAspectRatio(param, info.sarWidth, info.sarHeight);
> +
> + this->input = Input::open(info, bForceY4m);
> if (!this->input || this->input->isFail())
> {
> x265_log(param, X265_LOG_ERROR, "unable to open input file <%s>\n", inputfn);
> return true;
> }
> - if (this->input->getWidth())
> - {
> - /* the file knows its own dimensions, must be Y4M */
> - param->internalCsp = this->input->getColorSpace();
> - param->sourceWidth = this->input->getWidth();
> - param->sourceHeight = this->input->getHeight();
> - this->input->getRate(param->fpsNum, param->fpsDenom);
> - }
> - else
> - {
> - if (param->sourceHeight <= 0 || param->sourceWidth <= 0 || param->fpsNum == 0 || param->fpsDenom == 0)
> - {
> - x265_log(param, X265_LOG_ERROR, "YUV input requires --input-res WxH and --fps N to be specified\n");
> - return true;
> - }
> - this->input->setDimensions(param->sourceWidth, param->sourceHeight);
> - this->input->setColorSpace(param->internalCsp);
> - this->input->setBitDepth(inputBitDepth);
> - }
> - if (param->internalCsp != X265_CSP_I420 && param->internalCsp != X265_CSP_I444)
> + if (info.csp != X265_CSP_I420 && info.csp != X265_CSP_I444)
> {
> x265_log(param, X265_LOG_ERROR, "Only i420 and i444 color spaces are supported in this build\n");
> return true;
> }
> - if (inputBitDepth < 8 || inputBitDepth > 16)
> + if (info.depth < 8 || info.depth > 16)
> {
> x265_log(param, X265_LOG_ERROR, "Input bit depth (%d) must be between 8 and 16\n", inputBitDepth);
> return true;
> }
>
> - int guess = this->input->guessFrameCount();
> - if (this->seek)
> + /* Unconditionally accept height/width/csp from file info */
> + param->sourceWidth = info.width;
> + param->sourceHeight = info.height;
> + param->internalCsp = info.csp;
> +
> + /* Accept fps and sar from file info if not specified by user */
> + if (param->fpsDenom == 0 || param->fpsNum == 0)
> {
> - this->input->skipFrames(this->seek);
> + param->fpsDenom = info.fpsDenom;
> + param->fpsNum = info.fpsNum;
> }
> + if (!param->bEnableAspectRatioIdc && info.sarWidth && info.sarHeight)
> + setParamAspectRatio(param, info.sarWidth, info.sarHeight);
>
> - uint32_t fileFrameCount = guess < 0 ? 0 : (uint32_t)guess;
> - if (this->framesToBeEncoded && fileFrameCount)
> - this->framesToBeEncoded = X265_MIN(this->framesToBeEncoded, fileFrameCount - this->seek);
> - else if (fileFrameCount)
> - this->framesToBeEncoded = fileFrameCount - this->seek;
> -
> + if (this->framesToBeEncoded == 0 && (uint32_t)info.frameCount > seek)
> + this->framesToBeEncoded = info.frameCount - seek;
> if (param->logLevel >= X265_LOG_INFO)
> {
> - if (this->framesToBeEncoded == 0)
> - fprintf(stderr, "%s [info]: %dx%d %d/%d fps %s, unknown frame count\n", input->getName(),
> - param->sourceWidth, param->sourceHeight, param->fpsNum, param->fpsDenom,
> - x265_source_csp_names[param->internalCsp]);
> + char buf[128];
> + int p = sprintf(buf, "%dx%d fps %d/%d %s", param->sourceWidth, param->sourceHeight,
> + param->fpsNum, param->fpsDenom, x265_source_csp_names[param->internalCsp]);
> +
> + int width, height;
> + getParamAspectRatio(param, width, height);
> + if (width && height)
> + p += sprintf(buf + p, " sar %d:%d", width, height);
> +
> + if (framesToBeEncoded == 0 || info.frameCount == 0)
> + strcpy(buf + p, " unknown frame count");
> else
> - fprintf(stderr, "%s [info]: %dx%d %d/%d fps %s, frames %u - %d of %d\n", input->getName(),
> - param->sourceWidth, param->sourceHeight, param->fpsNum, param->fpsDenom,
> - x265_source_csp_names[param->internalCsp],
> - this->seek, this->seek + this->framesToBeEncoded - 1, fileFrameCount);
> + sprintf(buf + p, " frames %u - %d of %d", this->seek, this->seek + this->framesToBeEncoded - 1, info.frameCount);
> +
> + fprintf(stderr, "%s [info]: %s\n", input->getName(), buf);
> }
>
> this->input->startReader();
> @@ -605,20 +625,6 @@
> x265_source_csp_names[param->internalCsp]);
> }
>
> -#if HIGH_BIT_DEPTH
> - if (param->internalBitDepth != 10)
> - {
> - x265_log(param, X265_LOG_ERROR, "Only bit depths of 10 are supported in this build\n");
> - return true;
> - }
> -#else
> - if (param->internalBitDepth != 8)
> - {
> - x265_log(param, X265_LOG_ERROR, "Only bit depths of 8 are supported in this build\n");
> - return true;
> - }
> -#endif // if HIGH_BIT_DEPTH
> -
> this->bitstreamFile.open(bitstreamfn, std::fstream::binary | std::fstream::out);
> if (!this->bitstreamFile)
> {
>
>
> _______________________________________________
> 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/fd198213/attachment-0001.html>
More information about the x265-devel
mailing list