Beispiel #1
0
Datei: mp3.c Projekt: hjelmn/upod
int get_mp3_info (char *file_name, tihm_t *tihm) {
  struct mp3_file mp3;

  if (mp3_open (file_name, &mp3) < 0) {
    mp3_close (&mp3); /* Make sure everything is cleaned up */
    return -1;
  }

  if (mp3_scan (&mp3) < 0) {
    mp3_close (&mp3);
    return -1;
  }

  mp3_close (&mp3);

  tihm->bitrate = mp3.bitrate;
  tihm->vbr     = mp3.vbr;
  tihm->samplerate = mp3.samplerate;
  tihm->time       = mp3.duration;
  tihm->size       = mp3.file_size;
  tihm->mod_date   = mp3.mod_date;
  tihm->creation_date = mp3.mod_date;
  tihm->type      = string_to_int ("MP3 ");
  tihm->is_video  = 0;

  return 0;
}
Beispiel #2
0
/* Adapted from mpg321. */
static int count_time (const char *file)
{
	struct mp3_data *data;
	int time;
	
	debug ("Processing file %s", file);

	data = mp3_open_internal (file, 0);
	
	if (!data->ok)
		time = -1;
	else
		time = data->duration;
	
	mp3_close (data);

	return time;
}
Beispiel #3
0
int main(int argc, char *argv[]) {
  char *f[2];

  if (!(f[0] = *++argv) || !(f[1] = *++argv)) {
    fprintf(stderr, "Usage: mp3-write mp3in mp3out\n");
    return 1;
  }

  mp3_file_t in;
  if (!mp3_open_read(&in, f[0])) {
    fprintf(stderr, "Could not open mp3 file for read: %s\n", f[0]);
    return 1;
  }

  mp3_file_t out;
  if (!mp3_open_write(&out, f[1])) {
    fprintf(stderr, "Could not open mp3 file for write: %s\n", f[1]);
    mp3_close(&in);
    return 1;
  }

  mp3_frame_t frame;
  while (mp3_next_frame(&in, &frame) > 0) {
    memset(frame.raw, 0, 4 + frame.si_size);
    if (!mp3_trans_frame(&frame)) {
      fprintf(stderr, "Could not transform frame\n");
      mp3_close(&in);
      mp3_close(&out);
      return 1;
    }
    
    if (!mp3_fill_hdr(&frame) ||
        !mp3_fill_si(&frame) ||
        (mp3_write_frame(&out, &frame) <= 0)) {
      fprintf(stderr, "Could not write frame\n");
      mp3_close(&in);
      mp3_close(&out);
      return 1;
    }
  }

  mp3_close(&in);
  mp3_close(&out);

  return 0;
}
STE_SoftMP3_Dec::~STE_SoftMP3_Dec() {

    mp3_close((CODEC_INTERFACE_T *)mp3_itf);
    delete (CODEC_INTERFACE_T *)mp3_itf;
    mp3_itf = NULL;

    if (mDLHandle != NULL) {
        dlclose(mDLHandle);
    }

#ifdef PARTIAL_FRAME_HANDLING
    delete (AUDIO_MODULE_INTERFACE_T *)pAudioModuleItf;
    pAudioModuleItf = NULL;
#endif

    mp3_decode_init_malloc = NULL;
    mp3_close              = NULL;
    mp3_reset              = NULL;
    mp3_decode_frame       = NULL;
    mp3_2_5_parse_header   = NULL;

    ALOGI("Deallocated ST-Ericsson '%s' decoder through the SoftOMXPlugin " \
         "interface", this->name());
}
Beispiel #5
0
int run_receiver(char* portno, char* filename){

  /*
   * Your implementation should be self-contained in this file, no other source
   * or header file will be considered by our autograder.
   */

  int sockfd, receive_sockfd = -1, num_bytes = 0, num_packs = -1, expected_packet_number = 0;
  unsigned int old_check_sum1 = 0, old_check_sum2 = 0;
  char receiveBuffer[MAX_PKTSIZE] = "", sendBuffer[MAX_PKTSIZE];
  char hostname[MAX_PKTSIZE] = "";
  gethostname(hostname, MAX_PKTSIZE);
  char port_number[6];
  FILE *file;
  packet_t rcv_packet;
  file = fopen(filename, "w");
  sockfd = openUDPListenerSocket(portno);
  ack_t ack;

  while(expected_packet_number != num_packs) 
  {
    num_bytes = receiveUDPMessageAndPrint(sockfd, (char*)(&rcv_packet), 0);
    if(sizeof(handshake_t) == num_bytes)
    {

      handshake_t * handshake = (handshake_t *)&rcv_packet;
      
      old_check_sum1 = handshake->check_sum1;
      old_check_sum2 = handshake->check_sum2;
      if((old_check_sum2 == old_check_sum1) && (old_check_sum1 == handshake_check_sum(handshake)))
      {
        strcpy(hostname, handshake->hostname);
        strcpy(port_number, handshake->port);
        num_packs = handshake->num_packets;
        receive_sockfd = sendUDPMessageTo(hostname, port_number, (char *)handshake, num_bytes, receive_sockfd);
      }
    }
    else 
    {
      old_check_sum1 = rcv_packet.check_sum1;
      old_check_sum2 = rcv_packet.check_sum2;
      if((old_check_sum2 == old_check_sum1) && (old_check_sum1 == check_sum(&rcv_packet, MAX_PKTSIZE)))
      {
        if(rcv_packet.pack_number == expected_packet_number)
        {
          // printf("Packet Number Received: %d\n", expected_packet_number);
          fwrite(rcv_packet.buffer,1, rcv_packet.size - 16, file);
          expected_packet_number++;
        }
        ack.pack_number = rcv_packet.pack_number;
        ack_check_sum(&ack);
        sendUDPMessageTo(hostname, port_number, (char *)&ack, sizeof(ack_t), receive_sockfd);  
      }
    }
  
    
  }
  // printf("Total Packets Received: %d\n", num_packs);
  fclose(file);
  mp3_close(receive_sockfd);
  mp3_close(sockfd);
  return 0;
}