|
|
|
@@ -101,7 +101,7 @@ static int jpeg_create_header(uint8_t *buf, int size, uint32_t type, uint32_t w, |
|
|
|
{ |
|
|
|
PutBitContext pbc; |
|
|
|
uint8_t *dht_size_ptr; |
|
|
|
int dht_size; |
|
|
|
int dht_size, i; |
|
|
|
|
|
|
|
init_put_bits(&pbc, buf, size); |
|
|
|
|
|
|
|
@@ -125,21 +125,15 @@ static int jpeg_create_header(uint8_t *buf, int size, uint32_t type, uint32_t w, |
|
|
|
|
|
|
|
/* DQT */ |
|
|
|
put_marker(&pbc, DQT); |
|
|
|
if (nb_qtable == 2) { |
|
|
|
put_bits(&pbc, 16, 2 + 2 * (1 + 64)); |
|
|
|
} else { |
|
|
|
put_bits(&pbc, 16, 2 + 1 * (1 + 64)); |
|
|
|
} |
|
|
|
put_bits(&pbc, 8, 0); |
|
|
|
put_bits(&pbc, 16, 2 + nb_qtable * (1 + 64)); |
|
|
|
|
|
|
|
/* Each table is an array of 64 values given in zig-zag |
|
|
|
* order, identical to the format used in a JFIF DQT |
|
|
|
* marker segment. */ |
|
|
|
avpriv_copy_bits(&pbc, qtable, 64 * 8); |
|
|
|
for (i = 0; i < nb_qtable; i++) { |
|
|
|
put_bits(&pbc, 8, i); |
|
|
|
|
|
|
|
if (nb_qtable == 2) { |
|
|
|
put_bits(&pbc, 8, 1); |
|
|
|
avpriv_copy_bits(&pbc, qtable + 64, 64 * 8); |
|
|
|
/* Each table is an array of 64 values given in zig-zag |
|
|
|
* order, identical to the format used in a JFIF DQT |
|
|
|
* marker segment. */ |
|
|
|
avpriv_copy_bits(&pbc, qtable + 64 * i, 64 * 8); |
|
|
|
} |
|
|
|
|
|
|
|
/* DHT */ |
|
|
|
@@ -163,10 +157,8 @@ static int jpeg_create_header(uint8_t *buf, int size, uint32_t type, uint32_t w, |
|
|
|
put_marker(&pbc, SOF0); |
|
|
|
put_bits(&pbc, 16, 17); |
|
|
|
put_bits(&pbc, 8, 8); |
|
|
|
put_bits(&pbc, 8, h >> 8); |
|
|
|
put_bits(&pbc, 8, h); |
|
|
|
put_bits(&pbc, 8, w >> 8); |
|
|
|
put_bits(&pbc, 8, w); |
|
|
|
put_bits(&pbc, 16, h); |
|
|
|
put_bits(&pbc, 16, w); |
|
|
|
put_bits(&pbc, 8, 3); |
|
|
|
put_bits(&pbc, 8, 1); |
|
|
|
put_bits(&pbc, 8, type ? 34 : 33); |
|
|
|
|