Dev Center
Table of contents

Thanks for downloading Dynamsoft Barcode Reader Package!

Your download will start shortly. If your download does not begin, click here to retry.

Video Functions

Function Description
DBR_StartFrameDecoding Decode barcodes from inner frame queue.
DBR_StartFrameDecodingEx Decode barcodes from inner frame queue.
DBR_AppendFrame Append a frame image buffer to the inner frame queue.
DBR_StopFrameDecoding Stop thread used for frame decoding.
DBR_InitFrameDecodingParameters Initialize frame decoding parameter.
DBR_SetErrorCallback Set callback function to process errors which is triggered when the library finishes decoding a frame.
DBR_SetTextResultCallback Set callback function to process text results which is triggered when the library finishes decoding a frame.
DBR_SetUniqueBarcodeCallback Set callback function to process text results which is triggered when the library finishes decoding a frame and finds unique barcodes.
DBR_SetIntermediateResultCallback Set callback function to process intermediate results which is triggered when the library finishes decoding a frame.
DBR_GetLengthOfFrameQueue Get length of current inner frame queue.

DBR_StartFrameDecoding

Start a new thread to decode barcodes from the inner frame queue with specific frame decoding setting passed in.

DBR_API int DBR_StartFrameDecoding (void* barcodeReader, const int maxQueueLength, const int maxResultQueueLength, const int width, const int height, const int stride, const ImagePixelFormat format, const char* pTemplateName)	

Parameters
[in] barcodeReader Handle of the barcode reader instance.
[in] maxQueueLength The max number of frames waiting for decoding.
[in] maxResultQueueLength The max number of frames whose results (text result/localization result) will be kept.
[in] width The width of the frame image in pixels.
[in] height The height of the frame image in pixels.
[in] stride The stride (or scan width) of the frame image.
[in] format The image pixel format used in the image byte array.
[in] pTemplateName The template name.

Return Value
Returns error code. Possible return(s): DBR_OK; DBRERR_FRAME_DECODING_THREAD_EXISTS; DBRERR_PARAMETER_VALUE_INVALID; DBRERR_NULL_POINTER.
You can call DBR_GetErrorString to get detailed error message.

Code Snippet

char errorBuf[512];
DBR_InitLicense("YOUR-LICENSE-KEY", errorBuf, 512);
void* barcodeReader = DBR_GetInstance();
if(barcodeReader != NULL)
{
    int errorCode = DBR_StartFrameDecoding(barcodeReader, 2, 10, 1024, 720, 720, IPF_BINARY, "");
    //... more process here
    DBR_RecycleInstance(barcodeReader);
}

DBR_StartFrameDecodingEx

Start a new thread to decode barcodes from the inner frame queue with specific frame decoding setting defined in FrameDecodingParameters struct.

DBR_API int DBR_StartFrameDecodingEx (void* barcodeReader, FrameDecodingParameters parameters, const char* pTemplateName)	

Parameters
[in] barcodeReader Handle of the barcode reader instance.
[in] parameters The frame decoding parameters.
[in] pTemplateName The template name.

Return Value
Returns error code. Possible return(s): DBR_OK; DBRERR_FRAME_DECODING_THREAD_EXISTS; DBRERR_PARAMETER_VALUE_INVALID; DBRERR_NULL_POINTER.
You can call DBR_GetErrorString to get detailed error message.

Code Snippet

char errorBuf[512];
DBR_InitLicense("YOUR-LICENSE-KEY", errorBuf, 512);
void* barcodeReader = DBR_GetInstance();
if(barcodeReader != NULL)
{
    FrameDecodingParameters parameters;
    int errorCode = DBR_InitFrameDecodingParameters(barcodeReader, &parameters);
    if(errorCode == DBR_OK)
    {
        parameters.maxQueueLength = 3;
        parameters.maxResultQueueLength = 10;
        parameters.width = 20;
        parameters.height = 30;
        parameters.stride = 10;
        parameters.imagePixelFormat = IPF_GRAYSCALED;
        parameters.region.regionMeasuredByPercentage = 1;
        parameters.region.regionTop = 0;
        parameters.region.regionBottom = 100;
        parameters.region.regionLeft = 0;
        parameters.region.regionRight = 100;
        parameters.threshold = 0.1;
        parameters.fps = 0;
        int errorCode = DBR_StartFrameDecodingEx(barcodeReader, parameters, "");
        //... more process here
        DBR_RecycleInstance(barcodeReader);
    }
}

DBR_AppendFrame

Appends a frame image buffer to the inner frame queue.

DBR_API int DBR_AppendFrame (void* barcodeReader, unsigned char* pBufferBytes)

Parameters
[in] barcodeReader Handle of the barcode reader instance.
[in] pBufferBytes The array of bytes which contain the image data.

Return Value
Returns the ID of the appended frame.

Code Snippet

char errorBuf[512];
DBR_InitLicense("YOUR-LICENSE-KEY", errorBuf, 512);
void* barcodeReader = DBR_GetInstance();
if(barcodeReader != NULL)
{
    int frameId = DBR_AppendFrame(barcodeReader, pBufferBytes);
    //... more process here
    DBR_RecycleInstance(barcodeReader);
}

DBR_StopFrameDecoding

Stops the frame decoding thread created by DBR_StartFrameDecoding or DBR_StartFrameDecodingEx.

DBR_API int DBR_StopFrameDecoding (void* barcodeReader)

Parameters
[in] barcodeReader Handle of the barcode reader instance.

Return Value
Returns error code. Possible return(s): DBR_OK; DBRERR_STOP_DECODING_THREAD_FAILED.
You can call DBR_GetErrorString to get detailed error message.

Code Snippet

char errorBuf[512];
DBR_InitLicense("YOUR-LICENSE-KEY", errorBuf, 512);
void* barcodeReader = DBR_GetInstance();
if(barcodeReader != NULL)
{
    // call DBR_StartFrameDecodingEx and add more process here
    int errorCode = DBR_StopFrameDecoding(barcodeReader);
    DBR_RecycleInstance(barcodeReader);
}

DBR_InitFrameDecodingParameters

Initialize frame decoding parameters with default values.

DBR_API int DBR_InitFrameDecodingParameters (void* barcodeReader, FrameDecodingParameters* pParameters)	

Parameters
[in] barcodeReader Handle of the barcode reader instance.
[in,out] pParameters The frame decoding parameters.

Return Value
Returns error code. Possible return(s): DBR_OK; DBRERR_NULL_POINTER.
You can call DBR_GetErrorString to get detailed error message.

Code Snippet

char errorBuf[512];
DBR_InitLicense("YOUR-LICENSE-KEY", errorBuf, 512);
void* barcodeReader = DBR_GetInstance();
if(barcodeReader != NULL)
{
    FrameDecodingParameters parameters;
    int errorCode = DBR_InitFrameDecodingParameters(barcodeReader, &parameters);
    if(errorCode == DBR_OK)
    {
        parameters.maxQueueLength = 3;
        parameters.maxResultQueueLength = 10;
        parameters.width = 20;
        parameters.height = 30;
        parameters.stride = 10;
        parameters.imagePixelFormat = IPF_GRAYSCALED;
        parameters.region.regionMeasuredByPercentage = 1;
        parameters.region.regionTop = 0;
        parameters.region.regionBottom = 100;
        parameters.region.regionLeft = 0;
        parameters.region.regionRight = 100;
        parameters.threshold = 0.1;
        parameters.fps = 0;
    }
    //... more process here
    DBR_RecycleInstance(barcodeReader);
}

DBR_SetErrorCallback

Set callback function to process errors which is triggered when the library finishes decoding a frame.

DBR_API int DBR_SetErrorCallback (void* barcodeReader, CB_Error cbFunction, void* pUser)

Parameters
[in] barcodeReader Handle of the barcode reader instance.
[in] cbFunction Callback function.
[in] pUser Customized arguments passed to your function.

Return Value
Returns error code. Possible return(s): DBR_OK; DBRERR_FRAME_DECODING_THREAD_EXISTS.
You can call DBR_GetErrorString to get detailed error message.

Code Snippet

void ErrorFunction(int frameId, int errorCode, void * pUser)
{
    //TODO add your code for using error code
}
char errorBuf[512];
DBR_InitLicense("YOUR-LICENSE-KEY", errorBuf, 512);
void* barcodeReader = DBR_GetInstance();
if(barcodeReader != NULL)
{
    DBR_SetErrorCallback(barcodeReader, ErrorFunction, NULL);
    DBR_StartFrameDecoding(barcodeReader, 2, 10, 1024, 720, 720, IPF_BINARY, "");
    //... more process here
    DBR_RecycleInstance(barcodeReader);
}

DBR_SetTextResultCallback

Set callback function to process text results which is triggered when the library finishes decoding a frame.

DBR_API int DBR_SetTextResultCallback (void* barcodeReader, CB_TextResult cbFunction, void* pUser)

Parameters
[in] barcodeReader Handle of the barcode reader instance.
[in] cbFunction Callback function.
[in] pUserCustomized arguments passed to your function.

Return Value
Returns error code. Possible return(s): DBR_OK; DBRERR_FRAME_DECODING_THREAD_EXISTS.
You can call DBR_GetErrorString to get detailed error message.

Code Snippet

void TextResultFunction(int frameId, TextResultArray *pResults, void * pUser)
{
    //TODO add your code for using test results
}
char errorBuf[512];
DBR_InitLicense("YOUR-LICENSE-KEY", errorBuf, 512);
void* barcodeReader = DBR_GetInstance();
if(barcodeReader != NULL)
{
    DBR_SetTextResultCallback(barcodeReader, TextResultFunction, NULL);
    DBR_StartFrameDecoding(barcodeReader, 2, 10, 1024, 720, 720, IPF_BINARY, "");
    //... more process here
    DBR_RecycleInstance(barcodeReader);
}

DBR_SetUniqueBarcodeCallback

Set callback function to process text results which is triggered when the library finishes decoding a frame and finds unique barcodes.

DBR_API int DBR_SetUniqueBarcodeCallback(void* barcodeReader, CB_TextResult cbFunction, void* pUser)

Parameters
[in] barcodeReader Handle of the barcode reader instance.
[in] cbFunction Callback function.
[in] pUserCustomized arguments passed to your function.

Return Value
Returns error code. Possible return(s): DBR_OK; DBRERR_FRAME_DECODING_THREAD_EXISTS.
You can call DBR_GetErrorString to get detailed error message.

Code Snippet

void TextResultFunction(int frameId, TextResultArray *pResults, void * pUser)
{
    //TODO add your code for processing barcode results
}
char errorBuf[512];
DBR_InitLicense("YOUR-LICENSE-KEY", errorBuf, 512);
void* barcodeReader = DBR_GetInstance();
if(barcodeReader != NULL)
{
    DBR_SetUniqueBarcodeCallback(barcodeReader, TextResultFunction, NULL);
    DBR_StartFrameDecoding(barcodeReader, 2, 10, 1024, 720, 720, IPF_BINARY, "");
    //... more process here
    DBR_RecycleInstance(barcodeReader);
}

DBR_SetIntermediateResultCallback

Set callback function to process intermediate results which is triggered when the library finishes decoding a frame.

DBR_API int DBR_SetIntermediateResultCallback (void* barcodeReader, CB_IntermediateResult cbFunction, void* pUser)	

Parameters
[in] barcodeReader Handle of the barcode reader instance.
[in] cbFunction Callback function.
[in] pUser Customized arguments passed to your function.

Return Value
Returns error code. Possible return(s): DBR_OK; DBRERR_FRAME_DECODING_THREAD_EXISTS. You can call DBR_GetErrorString to get detailed error message.

Code Snippet

void IntermediateResultFunction(int frameId, IntermediateResultArray *pResults, void * pUser)
{
    //TODO add your code for using intermediate results
}
char errorBuf[512];
DBR_InitLicense("YOUR-LICENSE-KEY", errorBuf, 512);
void* barcodeReader = DBR_GetInstance();
if(barcodeReader != NULL)
{
    PublicRuntimeSettings settings;
    int errorCode = DBR_GetRuntimeSettings(barcodeReader, &settings);
    settings.intermediateResultTypes = IRT_ORIGINAL_IMAGE | IRT_COLOUR_CLUSTERED_IMAGE | IRT_COLOUR_CONVERTED_GRAYSCALE_IMAGE;
    char errorMessage[256];
    DBR_UpdateRuntimeSettings(barcodeReader, &settings, errorMessage, 256);
    DBR_SetIntermediateResultCallback(barcodeReader, IntermediateResultFunction, NULL);
    DBR_StartFrameDecoding(barcodeReader, 2, 10, 1024, 720, 720, IPF_BINARY, "");
    //... more process here
    DBR_RecycleInstance(barcodeReader);
}

DBR_GetLengthOfFrameQueue

Get length of current inner frame queue.

DBR_API int DBR_GetLengthOfFrameQueue (void* barcodeReader)

Parameters
[in] barcodeReader Handle of the barcode reader instance.

Return Value
Returns the length of the inner frame queue.

Code Snippet

char errorBuf[512];
DBR_InitLicense("YOUR-LICENSE-KEY", errorBuf, 512);
void* barcodeReader = DBR_GetInstance();
if(barcodeReader != NULL)
{
    int frameLength = DBR_GetLengthOfFrameQueue(barcodeReader);
    //... more process here
    DBR_RecycleInstance(barcodeReader);
}

This page is compatible for:

Version 7.5.0

Is this page helpful?

YesYes NoNo

In this article:

latest version

  • Latest version
  • Version 10.x
    • Version 10.0.20
    • Version 10.0.10
    • Version 10.0.0
  • Version 9.x
    • Version 9.6.30
    • Version 9.6.20
    • Version 9.6.10
    • Version 9.6.0
    • Version 9.4.0
    • Version 9.2.0
    • Version 9.0.0
  • Version 8.x
    • Version 8.8.0
    • Version 8.6.0
    • Version 8.4.0
    • Version 8.2.0
    • Version 8.1.2
    • Version 8.1.0
    • Version 8.0.0
  • Version 7.x
    • Version 7.6.0
    • Version 7.5.0
Change +