[03/13] rtpdec_jpeg: Simplify writing of the jpeg header

Message ID 1347363979-4676-3-git-send-email-martin@martin.st
State Committed
Commit 43957fcc71c08697eea7c684900ac793c87e487c
Headers show

Commit Message

Martin Storsjö Sept. 11, 2012, 11:46 a.m.
Generalize writing of any number of qtables. Don't manually write
16 bit values in two separate calls.
---
 libavformat/rtpdec_jpeg.c |   28 ++++++++++------------------
 1 file changed, 10 insertions(+), 18 deletions(-)

Patch

diff --git a/libavformat/rtpdec_jpeg.c b/libavformat/rtpdec_jpeg.c
index 0513b09..1c75c47 100644
--- a/libavformat/rtpdec_jpeg.c
+++ b/libavformat/rtpdec_jpeg.c
@@ -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);