summaryrefslogtreecommitdiffstats
path: root/gst/matroska/ebml-write.c
diff options
context:
space:
mode:
authorRonald S. Bultje <rbultje@ronald.bitfreak.net>2004-01-02 20:38:59 +0000
committerRonald S. Bultje <rbultje@ronald.bitfreak.net>2004-01-02 20:38:59 +0000
commit02029d218d53b4b8cd619a6cddb771b1642dd556 (patch)
tree6847750934213768117c2d3b6eeea31c741eedfb /gst/matroska/ebml-write.c
parentb4591e1182d6a93e3c8cee766b2f158205e10295 (diff)
gst/matroska/: fix signed integer reading/writing.
Original commit message from CVS: 2004-01-02 Ronald Bultje <rbultje@ronald.bitfreak.net> * gst/matroska/ebml-read.c: (gst_ebml_read_sint): * gst/matroska/ebml-write.c: (gst_ebml_write_sint): fix signed integer reading/writing.
Diffstat (limited to 'gst/matroska/ebml-write.c')
-rw-r--r--gst/matroska/ebml-write.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/gst/matroska/ebml-write.c b/gst/matroska/ebml-write.c
index 46cfd4a5..b6504867 100644
--- a/gst/matroska/ebml-write.c
+++ b/gst/matroska/ebml-write.c
@@ -391,7 +391,13 @@ gst_ebml_write_sint (GstEbmlWrite *ebml,
guint size = gst_ebml_write_get_uint_size (unum);
/* make unsigned */
- unum = (num < 0 ? -num : num) + (1LLU << ((8 * size) - 1));
+ if (num >= 0) {
+ unum = num;
+ } else {
+ unum = 0x80 << (size - 1);
+ unum += num;
+ unum |= 0x80 << (size - 1);
+ }
/* write */
gst_ebml_write_element_id (buf, id);