Changeset 3665

Show
Ignore:
Timestamp:
2008-07-31 02:13:41 (4 months ago)
Author:
j
Message:

get to know Ogg Dirac

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • liboggz/trunk/include/oggz/oggz_constants.h

    r3512 r3665  
    113113  OGGZ_CONTENT_CELT, 
    114114  OGGZ_CONTENT_KATE, 
     115  OGGZ_CONTENT_DIRAC, 
    115116  OGGZ_CONTENT_UNKNOWN 
    116117} OggzStreamContent; 
  • liboggz/trunk/src/liboggz/Makefile.am

    r3594 r3665  
    2323        oggz_vector.c oggz_vector.h \ 
    2424        oggz_dlist.c oggz_dlist.h \ 
    25         metric_internal.c 
     25        metric_internal.c \ 
     26        dirac.c dirac.h 
    2627 
    2728liboggz_la_LDFLAGS = -version-info @SHARED_VERSION_INFO@ @SHLIB_VERSION_ARG@ 
  • liboggz/trunk/src/liboggz/oggz_auto.c

    r3607 r3665  
    4444#include "oggz_private.h" 
    4545#include "oggz_byteorder.h" 
     46#include "dirac.h" 
    4647 
    4748#include <oggz/oggz_stream.h> 
     
    354355  oggz_stream_set_numheaders (oggz, serialno, numheaders); 
    355356 
     357  return 1; 
     358} 
     359 
     360static int 
     361auto_dirac (OGGZ * oggz, ogg_packet * op, long serialno, void * user_data) 
     362{ 
     363  char keyframe_granule_shift = 32; 
     364  int keyframe_shift; 
     365  dirac_info *info; 
     366 
     367  info = malloc(sizeof(dirac_info)); 
     368 
     369  dirac_parse_info(info, op->packet, op->bytes); 
     370 
     371 
     372  /* 
     373  FIXME: where is this in Ogg Dirac? 
     374  keyframe_granule_shift = (char) ((header[40] & 0x03) << 3); 
     375  keyframe_granule_shift |= (header[41] & 0xe0) >> 5;  
     376  */ 
     377  keyframe_shift = keyframe_granule_shift; 
     378 
     379#ifdef DEBUG 
     380  printf ("Got dirac fps %d/%d, keyframe_shift %d\n", 
     381          fps_numerator, fps_denominator, keyframe_shift); 
     382#endif 
     383 
     384  oggz_set_granulerate (oggz, serialno, (ogg_int64_t)info->fps_numerator, 
     385                        OGGZ_AUTO_MULT * (ogg_int64_t)info->fps_denominator); 
     386  oggz_set_granuleshift (oggz, serialno, keyframe_shift); 
     387 
     388  oggz_stream_set_numheaders (oggz, serialno, 3); 
     389 
     390  free(info); 
    356391  return 1; 
    357392} 
     
    10441079  {"CELT    ", 8, "CELT", auto_celt, auto_calc_celt, NULL}, 
    10451080  {"\200kate\0\0\0", 8, "Kate", auto_kate, NULL, NULL}, 
     1081  {"BBCD\0", 5, "Dirac", auto_dirac, NULL, NULL}, 
    10461082  {"", 0, "Unknown", NULL, NULL, NULL} 
    10471083};  
  • liboggz/trunk/src/tools/Makefile.am

    r3634 r3665  
    99INCLUDES = -I$(top_builddir) -I$(top_builddir)/include \ 
    1010           -I$(top_srcdir)/include \ 
     11           -I$(top_srcdir)/src/liboggz \ 
    1112           @OGG_CFLAGS@ 
    1213 
    1314OGGZDIR = ../liboggz 
    14 OGGZ_LIBS = $(OGGZDIR)/liboggz.la @OGG_LIBS@ 
     15OGGZ_LIBS = $(OGGZDIR)/liboggz.la @OGG_LIBS@ $(srcdir)/../liboggz/dirac.c 
    1516 
    1617oggz_any_programs = oggz oggz-known-codecs 
     
    3940oggz_known_codecs_LDADD = $(OGGZ_LIBS) 
    4041 
    41 oggz_info_SOURCES = oggz-info.c oggz_tools.c skeleton.c 
     42oggz_info_SOURCES = oggz-info.c oggz_tools.c skeleton.c  
    4243oggz_info_LDADD = $(OGGZ_LIBS) -lm 
    4344 
  • liboggz/trunk/src/tools/oggz-chop/Makefile.am

    r3625 r3665  
    33INCLUDES = -I$(top_builddir) -I$(top_builddir)/include \ 
    44           -I$(top_srcdir)/include -I$(top_srcdir)/src/tools \ 
     5           -I$(top_srcdir)/src/liboggz \ 
    56           -I$(top_srcdir)/src/tests \ 
    67           @OGG_CFLAGS@ 
     
    2728 
    2829oggz_chop_SOURCES = oggz-chop.c $(srcdir)/../oggz_tools.c $(srcdir)/../skeleton.c \ 
    29                     cmd.c cgi.c header.c httpdate.c main.c timespec.c 
     30                    $(srcdir)/../../liboggz/dirac.c cmd.c cgi.c header.c httpdate.c main.c timespec.c 
    3031oggz_chop_LDADD = $(OGGZ_LIBS) -lm 
    3132 
  • liboggz/trunk/src/tools/oggz-chop/oggz-chop.c

    r3625 r3665  
    340340  ts->fisbone.nr_header_packet = oggz_stream_get_numheaders (oggz, serialno); 
    341341  oggz_get_granulerate (oggz, serialno, &ts->fisbone.granule_rate_n, &ts->fisbone.granule_rate_d); 
     342  fprintf(stderr, "foobar: rate_n: %d: %d\n", serialno, ts->fisbone.granule_rate_n); 
     343  if(serialno==1540971931) 
     344    ts->fisbone.granule_rate_n = 25; 
     345  if(serialno==1142956214) 
     346    ts->fisbone.granule_rate_n = 48000; 
    342347  ts->fisbone.start_granule = 0; 
    343348  ts->fisbone.preroll = 0; 
  • liboggz/trunk/src/tools/oggz_tools.c

    r3617 r3665  
    3737#include <string.h> 
    3838#include <oggz/oggz.h> 
     39#include "dirac.h" 
    3940 
    4041#ifdef WIN32                                                                    
     
    4950#  define PRId64 "I64d" 
    5051#endif 
     52 
    5153 
    5254static  ogg_uint32_t 
     
    269271  return buf; 
    270272} 
     273 
     274static char * 
     275ot_dirac_info (unsigned char * data, long len) 
     276{ 
     277  char * buf; 
     278  dirac_info *info; 
     279 
     280  /* read in useful bits from sequence header */ 
     281  if (len < 24) return NULL; 
     282 
     283  buf = malloc (80); 
     284  info = malloc(sizeof(dirac_info)); 
     285 
     286  dirac_parse_info(info, data, len); 
     287 
     288  snprintf (buf, 80, 
     289            "\tVideo-Framerate: %.3f fps\n" 
     290            "\tVideo-Width: %d\n\tVideo-Height: %d\n", 
     291            (double)info->fps_numerator/ (double)info->fps_denominator, 
     292            info->width, info->height); 
     293 
     294  free(info); 
     295 
     296  return buf; 
     297} 
     298 
    271299 
    272300static char * 
     
    316344  ot_celt_info,     /* CELT */ 
    317345  ot_kate_info,     /* KATE */ 
     346  ot_dirac_info,    /* DIRAC */ 
    318347  NULL              /* UNKOWN */ 
    319348};