libnjb  2.2.7
Macros | Functions | Variables
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"

Macros

#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.

Macro Definition Documentation

#define FR_UNI_ALBUM   "UNI_ALBUM"

Unicode Album metadata for NJB1

Referenced by songid_pack(), and songid_unpack().

#define FR_UNI_ARTIST   "UNI_ARTIST"

Unicode Artist metadata for NJB1

Referenced by songid_pack(), and songid_unpack().

#define FR_UNI_FNAME   "UNI_FNAME"

Unicode Filename metadata for NJB1 (not used)

Referenced by songid_unpack().

#define FR_UNI_GENRE   "UNI_GENRE"

Unicode Genre metadata for NJB1

Referenced by songid_pack(), and songid_unpack().

#define FR_UNI_TITLE   "UNI_TITLE"

Unicode Title metadata for NJB1

Referenced by songid_pack(), and songid_unpack().

#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
songthe libnjb song ID to pack
tagsizea 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

References njb_songid_frame_struct::data, FR_ALBUM, FR_ARTIST, FR_GENRE, FR_TITLE, FR_UNI_ALBUM, FR_UNI_ARTIST, FR_UNI_GENRE, FR_UNI_TITLE, from_16bit_to_njb1_bytes(), from_16bit_to_njb3_bytes(), from_32bit_to_njb1_bytes(), njb_songid_frame_struct::label, njb_songid_struct::nframes, NJB_Songid_Getframe(), NJB_Songid_Reset_Getframe(), NJB_TYPE_STRING, NJB_TYPE_UINT16, NJB_TYPE_UINT32, NJB_UC_UTF8, njb_unicode_flag, strtoucs2(), njb_songid_frame_struct::strval, njb_songid_frame_struct::type, njb_songid_frame_struct::u_int16_val, njb_songid_frame_struct::u_int32_val, ucs2strlen(), and utf8tostr().

Referenced by NJB_Replace_Track_Tag(), and NJB_Send_Track().

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
songthe libnjb song ID to pack
tagsizea 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

References njb_songid_frame_struct::data, FR_ALBUM, FR_ARTIST, FR_CODEC, FR_FNAME, FR_FOLDER, FR_GENRE, FR_LENGTH, FR_PROTECTED, FR_SIZE, FR_TITLE, FR_TRACK, FR_YEAR, from_16bit_to_njb3_bytes(), from_32bit_to_njb3_bytes(), njb_songid_frame_struct::label, njb_songid_struct::nframes, NJB_CODEC_AA, NJB_CODEC_MP3, NJB_CODEC_WAV, NJB_CODEC_WMA, NJB_Songid_Getframe(), NJB_Songid_Reset_Getframe(), strtoucs2(), njb_songid_frame_struct::strval, njb_songid_frame_struct::u_int16_val, and ucs2strlen().

Referenced by NJB_Replace_Track_Tag(), and NJB_Send_Track().

int songid_sanity_check ( njb_t njb,
njb_songid_t songid 
)
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
datathe raw bytes from the NJB1
nbytesthe size of the NJB1 byte array
Returns
a newly allocated song ID that shall be freed by the caller after use

References FR_ALBUM, FR_ARTIST, FR_FNAME, FR_GENRE, FR_LENGTH, FR_TITLE, FR_TRACK, FR_UNI_ALBUM, FR_UNI_ARTIST, FR_UNI_FNAME, FR_UNI_GENRE, FR_UNI_TITLE, FR_YEAR, njb1_bytes_to_16bit(), njb1_bytes_to_32bit(), NJB_Songid_Addframe(), NJB_Songid_Destroy(), NJB_Songid_Frame_New_String(), NJB_Songid_Frame_New_Uint16(), NJB_Songid_Frame_New_Uint32(), NJB_Songid_New(), NJB_UC_UTF8, njb_unicode_flag, strtoutf8(), and ucs2tostr().

Referenced by njb_get_track_tag_header().

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)

Referenced by njb_set_unicode(), songid_pack(), songid_unpack(), strtoucs2(), and ucs2tostr().