@@ -63,6 +63,7 @@ NvJpegPythonImage* NvJpegPython_createImage(int width, int height, int nComponen
6363 imgdesc -> img .channel [i ] = pBuffer + (width * height * i );
6464 imgdesc -> img .pitch [i ] = width ;
6565 }
66+ imgdesc -> img .pitch [0 ] = width * 3 ;
6667
6768 imgdesc -> height = height ;
6869 imgdesc -> width = width ;
@@ -86,6 +87,7 @@ NvJpegPythonImage* NvJpegPython_createImageFromHost(int width, int height, const
8687 imgdesc -> img .channel [i ] = pBuffer + (width * height * i );
8788 imgdesc -> img .pitch [i ] = width ;
8889 }
90+ imgdesc -> img .pitch [0 ] = width * 3 ;
8991 cudaMemcpy (imgdesc -> img .channel [0 ], data , width * height * 3 , cudaMemcpyHostToDevice );
9092
9193 imgdesc -> height = height ;
@@ -114,7 +116,7 @@ NvJpegPythonImage* NvJpegPython_decode(NvJpegPythonHandle* handle, const unsigne
114116 nvjpegGetImageInfo (nv_handle , jpegData , length , & nComponent , & subsampling , widths , heights );
115117
116118 NvJpegPythonImage * imgdesc = NvJpegPython_createImage (widths [0 ], heights [0 ], nComponent , subsampling );
117- int nReturnCode = nvjpegDecode (nv_handle , nv_statue , jpegData , length , NVJPEG_OUTPUT_BGR , & (imgdesc -> img ), NULL );
119+ int nReturnCode = nvjpegDecode (nv_handle , nv_statue , jpegData , length , NVJPEG_OUTPUT_BGRI , & (imgdesc -> img ), NULL );
118120
119121 if (nReturnCode != 0 )
120122 {
@@ -162,7 +164,7 @@ NvJpegJpegData* NvJpegPython_encode(NvJpegPythonHandle* handle, NvJpegPythonImag
162164 nvjpegEncoderParamsSetOptimizedHuffman (nv_enc_params , 1 , NULL );
163165 nvjpegEncoderParamsSetSamplingFactors (nv_enc_params , img -> subsampling , NULL );
164166
165- nvjpegEncodeImage (nv_handle , nv_enc_state , nv_enc_params , & (img -> img ), NVJPEG_INPUT_BGR , img -> width , img -> height , NULL );
167+ nvjpegEncodeImage (nv_handle , nv_enc_state , nv_enc_params , & (img -> img ), NVJPEG_INPUT_BGRI , img -> width , img -> height , NULL );
166168
167169 size_t length ;
168170 nvjpegEncodeRetrieveBitstream (nv_handle , nv_enc_state , NULL , & length , NULL );
@@ -293,26 +295,13 @@ static PyObject* NvJpeg_decode(NvJpeg* Self, PyObject* Argvs)
293295 NvJpegPythonImage * img = NvJpegPython_decode (m_handle , (const unsigned char * )jpegData , len );
294296
295297 unsigned char * data = NvJpegPythonImage2HostMemory (img );
296- npy_intp dims [1 ] = {(npy_intp )((img -> width )* (img -> height ))* 3 };
297- PyObject * temp = PyArray_SimpleNewFromData (1 , dims , NPY_UINT8 , data );
298+
299+ npy_intp dims [3 ] = {(npy_intp )(img -> height ), (npy_intp )(img -> width ), 3 };
300+ PyObject * temp = PyArray_SimpleNewFromData (3 , dims , NPY_UINT8 , data );
301+
298302 PyArray_ENABLEFLAGS ((PyArrayObject * ) temp , NPY_ARRAY_OWNDATA );
299- // free(data);
300-
301- PyObject * shape = Py_BuildValue ("(i,i,i)" , 3 , img -> height , img -> width );
302303 NvJpegPython_destoryImage (& img );
303- PyObject * rtn = PyArray_Reshape ((PyArrayObject * )temp , shape );
304- Py_DECREF (shape );
305- Py_DECREF (temp );
306- temp = rtn ;
307-
308- rtn = PyArray_SwapAxes ((PyArrayObject * )temp , 0 , 2 );
309- Py_DECREF (temp );
310- temp = rtn ;
311-
312- rtn = PyArray_SwapAxes ((PyArrayObject * )temp , 0 , 1 );
313- Py_DECREF (temp );
314- // Py_INCREF(rtn);
315- return rtn ;
304+ return temp ;
316305}
317306
318307static PyObject * NvJpeg_encode (NvJpeg * Self , PyObject * Argvs )
@@ -339,6 +328,7 @@ static PyObject* NvJpeg_encode(NvJpeg* Self, PyObject* Argvs)
339328 }
340329
341330 NvJpegPythonHandle * m_handle = (NvJpegPythonHandle * )Self -> m_handle ;
331+
342332 NvJpegPythonImage * img = NvJpegPython_createImageFromHost (PyArray_DIM (vecin , 1 ), PyArray_DIM (vecin , 0 ), (const unsigned char * )PyArray_BYTES (vecin ), 3 );
343333 NvJpegJpegData * data = NvJpegPython_encode (m_handle , img , quality );
344334
0 commit comments