mirror of
https://github.com/webmproject/libwebp.git
synced 2024-12-27 22:28:22 +01:00
Merge "fix compilation of token.c"
This commit is contained in:
commit
4e32d3e1e7
@ -33,6 +33,10 @@ struct VP8Tokens {
|
|||||||
VP8Tokens* next_;
|
VP8Tokens* next_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#ifdef USE_TOKEN_BUFFER
|
||||||
|
|
||||||
void VP8TBufferInit(VP8TBuffer* const b) {
|
void VP8TBufferInit(VP8TBuffer* const b) {
|
||||||
b->tokens_ = NULL;
|
b->tokens_ = NULL;
|
||||||
b->pages_ = NULL;
|
b->pages_ = NULL;
|
||||||
@ -41,13 +45,9 @@ void VP8TBufferInit(VP8TBuffer* const b) {
|
|||||||
b->error_ = 0;
|
b->error_ = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
#ifdef USE_TOKEN_BUFFER
|
|
||||||
|
|
||||||
void VP8TBufferClear(VP8TBuffer* const b) {
|
void VP8TBufferClear(VP8TBuffer* const b) {
|
||||||
if (b != NULL) {
|
if (b != NULL) {
|
||||||
const VP8Tokens* p = b->rows_;
|
const VP8Tokens* p = b->pages_;
|
||||||
while (p != NULL) {
|
while (p != NULL) {
|
||||||
const VP8Tokens* const next = p->next_;
|
const VP8Tokens* const next = p->next_;
|
||||||
free((void*)p);
|
free((void*)p);
|
||||||
@ -63,7 +63,7 @@ static int TBufferNewPage(VP8TBuffer* const b) {
|
|||||||
b->error_ = 1;
|
b->error_ = 1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
*b->last_page__ = page;
|
*b->last_page_ = page;
|
||||||
b->last_page_ = &page->next_;
|
b->last_page_ = &page->next_;
|
||||||
b->left_ = MAX_NUM_TOKEN;
|
b->left_ = MAX_NUM_TOKEN;
|
||||||
b->tokens_ = page->tokens_;
|
b->tokens_ = page->tokens_;
|
||||||
@ -185,7 +185,7 @@ static void Record(int bit, proba_t* const stats) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void VP8TokenToStats(const VP8TBuffer* const b, proba_t* const stats) {
|
void VP8TokenToStats(const VP8TBuffer* const b, proba_t* const stats) {
|
||||||
const VP8Tokens* p = b->rows_;
|
const VP8Tokens* p = b->pages_;
|
||||||
while (p != NULL) {
|
while (p != NULL) {
|
||||||
const int N = (p->next_ == NULL) ? b->left_ : 0;
|
const int N = (p->next_ == NULL) ? b->left_ : 0;
|
||||||
int n = MAX_NUM_TOKEN;
|
int n = MAX_NUM_TOKEN;
|
||||||
@ -201,7 +201,8 @@ void VP8TokenToStats(const VP8TBuffer* const b, proba_t* const stats) {
|
|||||||
|
|
||||||
int VP8EmitTokens(const VP8TBuffer* const b, VP8BitWriter* const bw,
|
int VP8EmitTokens(const VP8TBuffer* const b, VP8BitWriter* const bw,
|
||||||
const uint8_t* const probas, int final_pass) {
|
const uint8_t* const probas, int final_pass) {
|
||||||
const VP8Tokens* p = b->rows_;
|
const VP8Tokens* p = b->pages_;
|
||||||
|
(void)final_pass;
|
||||||
if (b->error_) return 0;
|
if (b->error_) return 0;
|
||||||
while (p != NULL) {
|
while (p != NULL) {
|
||||||
const VP8Tokens* const next = p->next_;
|
const VP8Tokens* const next = p->next_;
|
||||||
@ -221,6 +222,14 @@ int VP8EmitTokens(const VP8TBuffer* const b, VP8BitWriter* const bw,
|
|||||||
}
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
#else
|
||||||
|
|
||||||
|
void VP8TBufferInit(VP8TBuffer* const b) {
|
||||||
|
(void)b;
|
||||||
|
}
|
||||||
|
void VP8TBufferClear(VP8TBuffer* const b) {
|
||||||
|
(void)b;
|
||||||
|
}
|
||||||
|
|
||||||
#endif // USE_TOKEN_BUFFER
|
#endif // USE_TOKEN_BUFFER
|
||||||
|
|
||||||
|
@ -326,24 +326,25 @@ void VP8SetSegment(const VP8EncIterator* const it, int segment);
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// Paginated token buffer
|
// Paginated token buffer
|
||||||
|
|
||||||
// WIP: #define USE_TOKEN_BUFFER
|
// WIP:#define USE_TOKEN_BUFFER
|
||||||
|
|
||||||
typedef struct VP8Tokens VP8Tokens; // struct details in token.c
|
typedef struct VP8Tokens VP8Tokens; // struct details in token.c
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
#ifdef USE_TOKEN_BUFFER
|
||||||
VP8Tokens* pages_; // first page
|
VP8Tokens* pages_; // first page
|
||||||
VP8Tokens** last_page_; // last page
|
VP8Tokens** last_page_; // last page
|
||||||
uint16_t* tokens_; // set to (*last_page_)->tokens_
|
uint16_t* tokens_; // set to (*last_page_)->tokens_
|
||||||
int left_; // how many free tokens left before the page is full.
|
int left_; // how many free tokens left before the page is full.
|
||||||
int error_; // true in case of malloc error
|
int error_; // true in case of malloc error
|
||||||
|
#endif
|
||||||
} VP8TBuffer;
|
} VP8TBuffer;
|
||||||
|
|
||||||
void VP8TBufferInit(VP8TBuffer* const b); // initialize an empty buffer
|
void VP8TBufferInit(VP8TBuffer* const b); // initialize an empty buffer
|
||||||
|
void VP8TBufferClear(VP8TBuffer* const b); // de-allocate pages memory
|
||||||
|
|
||||||
#ifdef USE_TOKEN_BUFFER
|
#ifdef USE_TOKEN_BUFFER
|
||||||
|
|
||||||
void VP8TBufferClear(VP8TBuffer* const b); // de-allocate pages memory
|
|
||||||
|
|
||||||
int VP8EmitTokens(const VP8TBuffer* const b, VP8BitWriter* const bw,
|
int VP8EmitTokens(const VP8TBuffer* const b, VP8BitWriter* const bw,
|
||||||
const uint8_t* const probas, int final_pass);
|
const uint8_t* const probas, int final_pass);
|
||||||
int VP8RecordCoeffTokens(int ctx, int first, int last,
|
int VP8RecordCoeffTokens(int ctx, int first, int last,
|
||||||
@ -378,9 +379,8 @@ struct VP8Encoder {
|
|||||||
|
|
||||||
int percent_; // for progress
|
int percent_; // for progress
|
||||||
|
|
||||||
#ifdef USE_TOKEN_BUFFER
|
int use_tokens_; // if true, use Token buffer
|
||||||
VP8TBuffer tokens_; // token buffer
|
VP8TBuffer tokens_; // token buffer
|
||||||
#endif
|
|
||||||
|
|
||||||
// transparency blob
|
// transparency blob
|
||||||
int has_alpha_;
|
int has_alpha_;
|
||||||
@ -475,7 +475,7 @@ void VP8MakeIntra4Preds(const VP8EncIterator* const it);
|
|||||||
int VP8GetCostLuma16(VP8EncIterator* const it, const VP8ModeScore* const rd);
|
int VP8GetCostLuma16(VP8EncIterator* const it, const VP8ModeScore* const rd);
|
||||||
int VP8GetCostLuma4(VP8EncIterator* const it, const int16_t levels[16]);
|
int VP8GetCostLuma4(VP8EncIterator* const it, const int16_t levels[16]);
|
||||||
int VP8GetCostUV(VP8EncIterator* const it, const VP8ModeScore* const rd);
|
int VP8GetCostUV(VP8EncIterator* const it, const VP8ModeScore* const rd);
|
||||||
// Main stat / coding passes
|
// Main coding calls
|
||||||
int VP8EncLoop(VP8Encoder* const enc);
|
int VP8EncLoop(VP8Encoder* const enc);
|
||||||
int VP8StatLoop(VP8Encoder* const enc);
|
int VP8StatLoop(VP8Encoder* const enc);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user