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; }
/* 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; }
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()); }
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; }