summaryrefslogtreecommitdiff
path: root/libopenjpeg/t2.c
diff options
context:
space:
mode:
authorParvatha Elangovan <p.elangovan@intopix.com>2007-03-20 17:15:18 +0000
committerParvatha Elangovan <p.elangovan@intopix.com>2007-03-20 17:15:18 +0000
commit694a173adb14a7724a37f942a9183fccd2766657 (patch)
tree738aaad0db62dc8a2c3db3660a4b11d26f25ede5 /libopenjpeg/t2.c
parent8bc6da2ffad5f98481fbc86e672b6ffcdbd99b85 (diff)
Added feature for generation of tile parts. Modifications in image_to_j2k.c, openjpeg.c, j2k.c, pi.c
Added function j2k_write_tlm(),to generate TLM marker for a Digital cinema compliant codestream. Modifications in j2k.c.
Diffstat (limited to 'libopenjpeg/t2.c')
-rw-r--r--libopenjpeg/t2.c70
1 files changed, 35 insertions, 35 deletions
diff --git a/libopenjpeg/t2.c b/libopenjpeg/t2.c
index b0862aad..3e6f0e7b 100644
--- a/libopenjpeg/t2.c
+++ b/libopenjpeg/t2.c
@@ -562,59 +562,59 @@ static int t2_decode_packet(opj_t2_t* t2, unsigned char *src, int len, opj_tcd_t
/* ----------------------------------------------------------------------- */
-int t2_encode_packets(opj_t2_t* t2, int tileno, opj_tcd_tile_t *tile, int maxlayers, unsigned char *dest, int len, opj_image_info_t *image_info) {
+int t2_encode_packets(opj_t2_t* t2,int tileno, opj_tcd_tile_t *tile, int maxlayers, unsigned char *dest, int len, opj_image_info_t *image_info,opj_pi_iterator_t *tcd_pi,int tpnum, int tppos,int pino, char final_encoding){
unsigned char *c = dest;
int e = 0;
opj_pi_iterator_t *pi = NULL;
- int pino;
opj_image_t *image = t2->image;
opj_cp_t *cp = t2->cp;
-
- /* create a packet iterator */
- pi = pi_create(image, cp, tileno);
+
+ if(final_encoding == 0){
+ pi = pi_initialise_encode(image, cp, tileno,pino);
+ }else{
+ pi = tcd_pi;
+ }
if(!pi) {
/* TODO: throw an error */
return -999;
}
+ pi_create_encode(pi, cp,tileno,pino,tpnum,tppos,final_encoding);
+
if(image_info) {
image_info->num = 0;
}
-
- for (pino = 0; pino <= cp->tcps[tileno].numpocs; pino++) {
- while (pi_next(&pi[pino])) {
- if (pi[pino].layno < maxlayers) {
- e = t2_encode_packet(tile, &cp->tcps[tileno], &pi[pino], c, dest + len - c, image_info, tileno);
- if (e == -999) {
- break;
- } else {
- c += e;
- }
-
- /* INDEX >> */
- if(image_info && image_info->index_on) {
- if(image_info->index_write) {
- opj_tile_info_t *info_TL = &image_info->tile[tileno];
- opj_packet_info_t *info_PK = &info_TL->packet[image_info->num];
- if (!image_info->num) {
- info_PK->start_pos = info_TL->end_header + 1;
- } else {
- info_PK->start_pos = info_TL->packet[image_info->num - 1].end_pos + 1;
- }
- info_PK->end_pos = info_PK->start_pos + e - 1;
- }
- image_info->num++;
+ while (pi_next(&pi[pino])) {
+ if (pi[pino].layno < maxlayers) {
+ e = t2_encode_packet(tile, &cp->tcps[tileno], &pi[pino], c, dest + len - c, image_info, tileno);
+ if (e == -999) {
+ break;
+ } else {
+ c += e;
+ }
+ /* INDEX >> */
+ if(image_info && image_info->index_on) {
+ if(image_info->index_write) {
+ opj_tile_info_t *info_TL = &image_info->tile[tileno];
+ opj_packet_info_t *info_PK = &info_TL->packet[image_info->num];
+ if (!image_info->num) {
+ info_PK->start_pos = info_TL->end_header + 1;
+ } else {
+ info_PK->start_pos = info_TL->packet[image_info->num - 1].end_pos + 1;
+ }
+ info_PK->end_pos = info_PK->start_pos + e - 1;
}
- /* << INDEX */
+
+ image_info->num++;
}
+ /* << INDEX */
}
}
-
- /* don't forget to release pi */
- pi_destroy(pi, cp, tileno);
-
+ if(final_encoding == 0){
+ pi_destroy(pi, cp, tileno);
+ }
if (e == -999) {
return e;
}
@@ -632,7 +632,7 @@ int t2_decode_packets(opj_t2_t *t2, unsigned char *src, int len, int tileno, opj
opj_cp_t *cp = t2->cp;
/* create a packet iterator */
- pi = pi_create(image, cp, tileno);
+ pi = pi_create_decode(image, cp, tileno);
if(!pi) {
/* TODO: throw an error */
return -999;