X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.0%2Fcinelerra%2Fchannel.C;fp=cinelerra-5.0%2Fcinelerra%2Fchannel.C;h=0000000000000000000000000000000000000000;hb=30bdb85eb33a8ee7ba675038a86c6be59c43d7bd;hp=c439df730d4425a54a3a12d811fff066757ca08d;hpb=52fcc46226f9df46f9ce9d0566dc568455a7db0b;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.0/cinelerra/channel.C b/cinelerra-5.0/cinelerra/channel.C deleted file mode 100644 index c439df73..00000000 --- a/cinelerra-5.0/cinelerra/channel.C +++ /dev/null @@ -1,242 +0,0 @@ - -/* - * CINELERRA - * Copyright (C) 2008 Adam Williams - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - */ - -#include "channel.h" -#include "bchash.h" -#include "filexml.h" -#include - -// Channel table entry for the TV tuner - -Channel::Channel() -{ - reset(); -} - -Channel::Channel(Channel *channel) -{ - copy_settings(channel); - copy_usage(channel); -} - -Channel::~Channel() -{ -} - - -void Channel::reset() -{ -// GUI options - use_frequency = 0; - use_fine = 0; - use_norm = 0; - use_input = 0; - - title[0] = 0; - device_name[0] = 0; - entry = 0; - element = 0; - freqtable = 0; - fine_tune = 0; - input = 0; - norm = 0; - device_index = 0; - tuner = 0; - has_scanning = 0; - has_subchan = 0; - - audio_stream = 0; - video_stream = 0; - audio_pid = 0x14; - video_pid = 0x11; -} - -void Channel::dump() -{ - printf("Channel::dump title=%s\n" - "device_name=%s\n" - "use_freq=%d\n" - "use_fine=%d\n" - "use_norm=%d\n" - "use_input=%d\n" - "has_scanning=%d\n" - "has_subchan=%d\n", - title, - device_name, - use_frequency, - use_fine, - use_norm, - use_input, - has_scanning, - has_subchan); -} - -Channel& Channel::operator=(Channel &channel) -{ - printf("Channel::operator= is not supported.\n"); - return *this; -} - -bool Channel::operator==(Channel &channel) -{ - if( this == &channel ) return true; - return this->entry != channel.entry || - this->element != channel.element || - this->freqtable != channel.freqtable || - this->fine_tune != channel.fine_tune || - this->input != channel.input || - this->norm != channel.norm || - this->device_index != channel.device_index || - this->tuner != channel.tuner || - this->audio_stream != channel.audio_stream || - this->video_stream != channel.video_stream || - this->audio_pid != channel.audio_pid || - this->video_pid != channel.video_pid ? false : true; -} - -bool Channel::operator!=(Channel &channel) -{ - return *this == channel ? false : true; -} - -void Channel::copy_settings(Channel *channel) -{ - strcpy(this->title, channel->title); - this->entry = channel->entry; - this->element = channel->element; - this->freqtable = channel->freqtable; - this->fine_tune = channel->fine_tune; - this->input = channel->input; - this->norm = channel->norm; - this->device_index = channel->device_index; - this->tuner = channel->tuner; - this->audio_stream = channel->audio_stream; - this->video_stream = channel->video_stream; - this->audio_pid = channel->audio_pid; - this->video_pid = channel->video_pid; -} - -void Channel::copy_usage(Channel *channel) -{ - this->use_frequency = channel->use_frequency; - this->use_fine = channel->use_fine; - this->use_norm = channel->use_norm; - this->use_input = channel->use_input; - this->has_scanning = channel->has_scanning; - this->has_subchan = channel->has_subchan; -} - -int Channel::load(FileXML *file) -{ - int done = 0; - char *text; - - - while(!done) - { - done = file->read_tag(); - if(!done) - { - if(file->tag.title_is("CHANNEL")) - { - entry = file->tag.get_property("ENTRY", entry); - element = file->tag.get_property("ELEMENT", element); - freqtable = file->tag.get_property("FREQTABLE", freqtable); - fine_tune = file->tag.get_property("FINE_TUNE", fine_tune); - input = file->tag.get_property("INPUT", input); - norm = file->tag.get_property("NORM", norm); - device_index = file->tag.get_property("DEVICE_INDEX", device_index); - tuner = file->tag.get_property("TUNER", tuner); - audio_stream = file->tag.get_property("AUDIO_STREAM", audio_pid); - video_stream = file->tag.get_property("VIDEO_STREAM", video_pid); - audio_pid = file->tag.get_property("AUDIO_PID", audio_pid); - video_pid = file->tag.get_property("VIDEO_PID", video_pid); - text = file->read_text(); - strcpy(title, text); - } - else - if(file->tag.title_is("/CHANNEL")) - return 0; - } - } - return done; -} - -int Channel::save(FileXML *file) -{ - file->tag.set_title("CHANNEL"); - file->tag.set_property("ENTRY", entry); - file->tag.set_property("ELEMENT", element); - file->tag.set_property("FREQTABLE", freqtable); - file->tag.set_property("FINE_TUNE", fine_tune); - file->tag.set_property("INPUT", input); - file->tag.set_property("NORM", norm); - file->tag.set_property("DEVICE_INDEX", device_index); - file->tag.set_property("TUNER", tuner); - file->tag.set_property("AUDIO_STREAM", audio_stream); - file->tag.set_property("VIDEO_STREAM", video_stream); - file->tag.set_property("AUDIO_PID", audio_pid); - file->tag.set_property("VIDEO_PID", video_pid); - file->append_tag(); - file->append_text(title); - file->tag.set_title("/CHANNEL"); - file->append_tag(); - file->append_newline(); - return 0; -} - - - -void Channel::load_defaults(BC_Hash *defaults) -{ - freqtable = defaults->get("SCAN_FREQTABLE", freqtable); - input = defaults->get("SCAN_INPUT", input); - norm = defaults->get("SCAN_NORM", norm); -} - -void Channel::save_defaults(BC_Hash *defaults) -{ - defaults->update("SCAN_FREQTABLE", freqtable); - defaults->update("SCAN_INPUT", input); - defaults->update("SCAN_NORM", norm); -} - -static inline bool is_numeric(char c) { return (c>='0' && c<='9'); } -static inline bool is_separator(char c) { return (c=='.' || c=='-'); } - -static inline void get_chan(const char *p, int &ch, int &sub) -{ - while( *p == ' ' ) ++p; - for( ch=0,sub=1; is_numeric(*p); ++p ) ch = ch*10 + *p-'0'; - if( !*p || !is_separator(*p) || !is_numeric(*++p) ) return; - for( sub=*p-'0'; is_numeric(*++p); ) sub = sub*10 + *p-'0'; -} - -int Channel::cstrcmp(const char *name) -{ - if( !strcmp(name, title) ) return 0; - int ch1, sub1; get_chan(name, ch1, sub1); - int ch2, sub2; get_chan(title, ch2, sub2); - int ret = ch1 - ch2; - if( !ret ) ret = sub1 - sub2; - return ret; -} -