songid.c File Reference

#include <stdlib.h>
#include <string.h>
#include "libnjb.h"
#include "base.h"
#include "njb_error.h"
#include "defs.h"
#include "protocol3.h"
#include "byteorder.h"
#include "unicode.h"
#include "songid.h"

Defines

#define UNICODE_ON_NJB1
#define FR_UNI_TITLE   "UNI_TITLE"
#define FR_UNI_ALBUM   "UNI_ALBUM"
#define FR_UNI_GENRE   "UNI_GENRE"
#define FR_UNI_ARTIST   "UNI_ARTIST"
#define FR_UNI_FNAME   "UNI_FNAME"

Functions

njb_songid_tNJB_Songid_New (void)
njb_songid_tsongid_unpack (void *data, size_t nbytes)
unsigned char * songid_pack (njb_songid_t *song, u_int32_t *tagsize)
unsigned char * songid_pack3 (njb_songid_t *song, u_int32_t *tagsize)
void NJB_Songid_Addframe (njb_songid_t *song, njb_songid_frame_t *frame)
void NJB_Songid_Destroy (njb_songid_t *songid)
void NJB_Songid_Reset_Getframe (njb_songid_t *song)
njb_songid_frame_tNJB_Songid_Getframe (njb_songid_t *song)
njb_songid_frame_tNJB_Songid_Findframe (njb_songid_t *song, const char *label)
int songid_sanity_check (njb_t *njb, njb_songid_t *songid)
njb_songid_frame_tNJB_Songid_Frame_New_String (const char *label, const char *value)
njb_songid_frame_tNJB_Songid_Frame_New_Codec (const char *value)
njb_songid_frame_tNJB_Songid_Frame_New_Uint16 (const char *label, u_int16_t value)
njb_songid_frame_tNJB_Songid_Frame_New_Uint32 (const char *label, u_int32_t value)
void NJB_Songid_Frame_Destroy (njb_songid_frame_t *frame)

Variables

int __sub_depth
int njb_unicode_flag

Detailed Description

This file contains the functions that are used for manipulating all song/track metadata, such as artist, title etc.

Define Documentation

#define FR_UNI_ALBUM   "UNI_ALBUM"

Unicode Album metadata for NJB1

#define FR_UNI_ARTIST   "UNI_ARTIST"

Unicode Artist metadata for NJB1

#define FR_UNI_FNAME   "UNI_FNAME"

Unicode Filename metadata for NJB1 (not used)

#define FR_UNI_GENRE   "UNI_GENRE"

Unicode Genre metadata for NJB1

#define FR_UNI_TITLE   "UNI_TITLE"

Unicode Title metadata for NJB1

#define UNICODE_ON_NJB1

We want to use Unicode also on NJB1


Function Documentation

unsigned char* songid_pack ( njb_songid_t song,
u_int32_t *  tagsize 
)

This packs (serialize, marshal) a libnjb song ID into the raw byte structure used by the NJB1.

Parameters:
song the libnjb song ID to pack
tagsize a pointer to an integer that will hold the size of the resulting NJB1 songid structure
Returns:
a newly allocated byte array holding the NJB1 representation of the song ID, the memory should be freed by the caller after use

unsigned char* songid_pack3 ( njb_songid_t song,
u_int32_t *  tagsize 
)

This packs (serialize, marshal) a libnjb song ID into the raw byte structure used by the series 3 devices.

Parameters:
song the libnjb song ID to pack
tagsize a pointer to an integer that will hold the size of the resulting series 3 songid structure
Returns:
a newly allocated byte array holding the series 3 representation of the song ID, the memory should be freed by the caller after use

int songid_sanity_check ( njb_t njb,
njb_songid_t songid 
)

This function checks that a tag has all compulsory elements, i.e.: size, codec and track number

Parameters:
songid the song ID to be checked for sanity
Returns:
0 if the tag is sane, -1 if it is insane

njb_songid_t* songid_unpack ( void *  data,
size_t  nbytes 
)

This takes a raw chunk of memory representing a song ID as used by the NJB1 and convert it into a song ID structure as used by libnjb.

Parameters:
data the raw bytes from the NJB1
nbytes the size of the NJB1 byte array
Returns:
a newly allocated song ID that shall be freed by the caller after use


Variable Documentation

int __sub_depth

The current subroutine depth for all of libnjb (global)

int njb_unicode_flag

A flag for if unicode is used or not (global)


Generated on Mon Sep 11 00:52:12 2006 for libnjb by  doxygen 1.4.7