Exemplo n.º 1
0
Arquivo: main.c Projeto: jtheoof/bina
void
bina_exit()
{
    renderer_destroy();

    if (m.window) {
        sdl_destroy_window(m.window);
    }

    log_d("exiting library");
    sdl_quit();
}
Exemplo n.º 2
0
void free_resources()
{
    sdl_quit(main_window, main_context);
}
Exemplo n.º 3
0
int main(int argc, char const *argv[])
{
    arguments_t arguments;
    try {
        arguments = get_command_line_arguments(argc, argv);
    } catch(std::string option) {
        std::cout << "Unknown option: " << option << std::endl;
        return -1;
    }
    if(arguments.options.help) {
        std::cout << "usage: ans [--version] [--help] [--text] [--ansi] [--xterm256] [--xterm24bit]" << std::endl;
        std::cout << "       [--png] [--scroller] [file ...]" << std::endl;
        std::cout << std::endl;
        std::cout << "    --text                 Display as plain-text" << std::endl;
        std::cout << "    --ansi                 Display with ANSi escape sequences" << std::endl;
        std::cout << "    --xterm256             Display with XTerm's 256-color palette" << std::endl;
        std::cout << "    --xterm24bit           Display with 24-Bit escape sequences" << std::endl;
        std::cout << "    --png                  Generate a PNG image" << std::endl;
        std::cout << "    --scroller             Display artwork as a scrolling display" << std::endl;
        std::cout << "    --scroller-continuous  Display artwork as a continuous scrolling display" << std::endl;
        return 0;
    }
    if(arguments.options.version) {
        std::cout << "ans version 0.1" << std::endl;
        return 0;
    }
    switch(arguments.options.output_type) {
    case output_type_t::scroller:
    case output_type_t::scroller_continuous:
        sdl_init();
        scroller_init(renderer, width, height);
        break;
    default:
        break;
    }
    for(auto filename:arguments.files) {
        try {
            auto artwork = load_artwork(filename);
            switch(arguments.options.output_type) {
            case output_type_t::text:
                display_as_text(std::cout, artwork);
                break;
            case output_type_t::ansi:
                display_as_ansi(std::cout, artwork);
                break;
            case output_type_t::xterm256:
                display_as_xterm256(std::cout, artwork);
                break;
            case output_type_t::xterm24bit:
                display_as_xterm24bit(std::cout, artwork);
                break;
            case output_type_t::png:
                {
                    image_t image(artwork);
                    image.save_as_png(filename + ".png");
                }
                break;
            case output_type_t::scroller:
                if(display_as_scroller(window, width, height, renderer, artwork, false)) {
                    scroller_quit();
                    sdl_quit();
                    return 0;
                }
                break;
            case output_type_t::scroller_continuous:
                if(display_as_scroller(window, width, height, renderer, artwork, true)) {
                    scroller_quit();
                    sdl_quit();
                    return 0;
                }
                break;
            }
        } catch(file_format_not_recognized_t e) {
            std::cerr << "File format not recognized: " << filename << std::endl;
        } catch(std::exception e) {
            std::cerr << "An error occurred whilst attempting to read " << filename << std::endl;
        }
    }
    switch(arguments.options.output_type) {
    case output_type_t::scroller:
    case output_type_t::scroller_continuous:
        scroller_quit();
        sdl_quit();
        break;
    default:
        break;
    }
    return 0;
}
Exemplo n.º 4
0
int main(int argc, char*argv[])
{
    if (argc < 2 || strcmp(argv[1], "-h") == 0 || strcmp(argv[1], "--help") == 0) {
        usage();
        return 0;
    }

    signal(SIGINT, &onExit);
    streaming = 0;
    AVOutputFormat *fmt;
    AVFormatContext *oc;
    avcodec_init();
    av_register_all();

    fmt = av_guess_format(NULL, ".mkv", NULL);
    if (!fmt) {
        fprintf(stderr, "Could not find suitable output format\n");
        exit(1);
    }
    fmt->flags = fmt->flags | AVFMT_NOFILE;

    // allocate the output media context
    oc = avformat_alloc_context();
    if (!oc) {
        fprintf(stderr, "Memory error\n");
        exit(1);
    }
    oc->oformat = fmt;

    // set the output parameters (must be done even if no parameters).
    if (av_set_parameters(oc, NULL) < 0) {
        fprintf(stderr, "Invalid output format parameters\n");
        exit(1);
    }

    // * Initializiations *
    video_record_init(fmt, oc);
    video_play_init();
    audio_record_init(fmt, oc);

    // * Start recording and encoding audio and video *
    stopRecording = 0;
    pthread_create(&video_thread_id, NULL, startVideoEncoding, NULL);
    pthread_create(&audio_thread_id, NULL, startAudioEncoding, NULL);
    pthread_create(&keyboard_thread_id, NULL,  captureKeyboard, NULL);

    // * Connect to nameserver *
    char * name = "default";
    char* protocol = "0";
    char* control_port = CONTROL_PORT_S;
    if( argc >= 2)
        name = argv[1];
    if( argc >= 3)
        protocol = argv[2];
    if( argc >= 4)
        control_port = argv[3];
    register_nameserver(name, protocol, control_port);

    // * Establish control, audio, and video connections *
    if(protocol[0] == TCP)
        establish_peer_connections(SOCK_STREAM);
    else if(protocol[0] == UDP)
        establish_peer_connections(SOCK_DGRAM);
    else
        exit(1);

    send_init_control_packet( oc->streams[0], oc->streams[1] );

    // * Transmit data through the network *
    pthread_create(&control_network_thread_id, NULL, (void*)listen_control_packets,(void*) NULL);
    pthread_create(&video_network_thread_id, NULL, (void*)stream_video_packets, (void*)NULL);
    pthread_create(&audio_network_thread_id, NULL, (void*)stream_audio_packets, (void*)NULL);
    streaming = 1;

    // * Wait for threads to exit *
    pthread_join(video_thread_id, NULL);
    pthread_join(audio_thread_id, NULL);
    pthread_join(keyboard_thread_id, NULL);
    pthread_join(control_network_thread_id, NULL);
    pthread_join(video_network_thread_id, NULL);
    pthread_join(audio_network_thread_id, NULL);

    // * Exit *
//	pthread_mutex_destroy(&fileMutex);
    sdl_quit();
    video_close();
    audio_close();
    av_free(oc);
    printf("[RECORDER] Quit Successfully\n");
    return 0;
}