text:
Kitarō
"Kitaro" and "Kitarou" redirect here. For the GeGeGe no Kitaro character, see Kitaro (GeGeGe no Kitaro).
Kitarō playing in Tehran, October 2014
Native name
喜多郎
Masanori Takahashi
(1953-02-04) February 4, 1953 (age 66)
Toyohashi, Aichi, Japan
Electronica, world, folk, classical, new-age
Musician, composer, record producer, arranger
Keyboards, guitar, bass guitar, Japanese flutes, drums, percussion
Geffen/Warner Bros. Records (US)
Geffen/MCA Records (US)
Domo Records
Vertigo Records
Far East Family Band
Kitarō (喜多郎), born Masanori Takahashi (高橋 正則) (February 4, 1953), is a Japanese recording artist, composer, record producer, and arranger noted for his electronic-instrumental music, and is often associated with and regarded as one of the most prominent musical acts of New-age music.[1][2] He is the winner of a Grammy Award for Best New Age Album (Thinking of You (1999); with a record 16 nominations in the same category) and a Golden Globe Award for the Heaven & Earth (1993) original score.[3]
1 Early life: 1954–76
2 Solo career: 1977–present
2.1 Silk Road
2.2 1984–1993
3 1994–present
3.1 Domo Records
3.2 Sacred Journey of Ku-Kai series
3.3 Impressions of the West Lake
3.4 Recent projects
3.5 Touring and other activities
6 Tours
Early life: 1954–76[edit]
Masanori Takahashi was born in Toyohashi, Aichi, Japan, and is a graduate of Sahid University.[2][4] Kitarō, which is his boyhood name meaning "man of love and joy", a practicing Buddhist himself, was born in a family of Shinto-Buddhist farmers.[5] After graduating his parents were first opposed to the idea of their son having a musical career. In an effort to maneuver him towards their vision, they made arrangements for him to take a job at a local company. In return, he did not show for the job without telling them, and managed to convince them to work on something he loved.[6]
In high school Kitarō played electric guitar in a band that played American rhythm and blues of Otis Redding and covers by The Beatles.[1][7][8] After graduating, and learning to play drums and bass,[6] Kitaro moved to Tokyo to experience and become a part of the music scene, and it was there that he discovered the synthesizer. His first synthesizer was analog, and he recalls having "just loved the analog sound that it made compared to today's digital sound".
In the early 1970s he changed completely to keyboard and joined the Japanese progressive rock band Far East Family Band and recorded four albums with them. While in Japan and Europe in 1975,[9] he met the German electronica and former Tangerine Dream member Klaus Schulze. Schulze produced two albums for the band and gave Kitaro some tips for controlling synthesizers.[1] In 1976, Kitaro left Far East Family Band and travelled through Asia (China, Laos, Thailand, India).[2][10]
Solo career: 1977–present[edit]
Back in Japan, Kitaro started his solo career in 1977. The first two albums Ten Kai and Daichi were released in 1978 and 1979. He performed his first symphonic concert at the "Small Hall" of the Kosei Nenkin Kaikan in Shinjuku, Tokyo.
Silk Road[edit]
The Silk Road: The Rise And Fall Of Civilizations is an NHK Tokushu documentary series that first aired on 7 April 1980, with sequels being broadcast over a 10-year period. It took a total of 17 years from conception to complete what many consider a landmark in Japan's broadcasting television history.[11] The intention of the program was to reveal how ancient Japan was influenced by the Silk Road trade route. The documentary was narrated by Ishizaka Koji with music composed by Kitaro, who insisted that the show be broadcast in stereo. The music was composed mainly using a Minimoog, Minikorg 700, and Maxikorg DV800. The score received a Galaxy Award,[12] and the series of soundtracks sold millions of copies. The success created from the program brought Kitaro international attention.[2][4]
1984–1993[edit]
Kitaro playing live in the early 1990s
In 1984, Kitaro embarked on a "Live in Asia" tour. Notably, he was forced to cancel a leg in Singapore because he had long hair and at that time the country had a policy banning it.[13]
He entered into a worldwide distribution arrangement with Geffen Records in 1985–1986.[1][7] This included a re-releasing of six prior albums titled Ten Kai (aka Astral Voyage), Daichi (aka Full Moon Story), Millennia, India, Silver Cloud and Live in Asia (aka Asia) (each packaged with Japanesque obi strips) as well as a new album, aptly titled Towards the West. Due to his combination of electronic and acoustic sounds, mellow music and repeating chords which resembled the umbrella New-age music category in the United States and Europe, his music was labeled as "New-age".[7] However, he's not comfortable with the term,[14] but it doesn't mean much for him., "whether people say my music is new age or not, it's OK with me, I'm just going to keep calling it Kitaro's music".[5][6] On his music he noted that his outlook on life, study of philosophy, and responsibility to create music which has a good influence on society, influence his musical creation.[7]
In 1987, he collaborated with Mickey Hart of the Grateful Dead for the album The Light of the Spirit (which sold two million copies) and in 1992 with Jon Anderson (Yes) for the album Dream. In 1988, his record sales soared to 10 million worldwide following a successful US tour. He was nominated three times for Grammy Award for Best New Age Album during his tenure at Geffen Records. In 1990 was released studio album Kojiki, which was inspired by the Japense 8th century chronicle Kojiki, and it reached #159 on Billboard 200, and #1 on Billboard New Age albums chart.[3] His soundtrack for the movie Heaven & Earth (1993) won the Golden Globe Award for Best Original Score.[15] Kitaro also produced an album Scenes (1992) released by Shrapnel Records with former Megadeth guitarist Marty Friedman.[1]
1994–present[edit]
Domo Records[edit]
Since his 1994 debut for Domo Records, and the Grammy-nominated Mandala, Kitaro has released 24 studio albums. Among them, the live An Enchanted Evening (1995), Gaia-Onbashira (1998), and Ancient (2001) were all Grammy nominated. In 1999, Thinking of You won the Grammy for Best New Age Album. Kitaro's and soundtrack album The Soong Sisters (2000) received, Best Original Music Award from the Hong Kong Film Award (1998) as well as the Taiwan Golden Horse Film Festival and Award (1997).[3]
Sacred Journey of Ku-Kai series[edit]
Kitaro's music has long been recognized for its messages of peace and spirituality. In the wake of 9/11, during which time the conceptual endeavor, which he envisioned as an artistic means to help unify people globally, the artist began recording Sacred Journey of Ku-Kai (2003), a series of peace-themed albums inspired by the Shikoku Henro Pilgrimage, the travel of Kūkai more than 1100 years ago. The four volumes in the album series were released in 2003, 2005, 2007, and 2011, respectively. Every track on the 4 volumes of Sacred Journey Of Ku-Kai contains samples from ancient Japanese temple bells (Peace Bells) from 88 sacred temples on the island of Shikoku, Japan.[4][3][6]
Impressions of the West Lake[edit]
In 2007, Kitaro composed the music for Impression West Lake, a large-scale opera, directed by the renowned Chinese film director Zhang Yimou. The opera reflects Hangzhou city's history and culture through music and dance.[6] Using modern technology, the stage is 75 centimeters below the lake's surface during the day so as not to affect the landscape and boating activities. In the evening, the stage is a few centimeters below the lake's surface so actors can walk and perform freely over a surprising water mirror that compose with the lights and colors. The one-hour event had its opening night in March 2007.[16] In 2009, Domo Records released the original soundtrack album Impressions of the West Lake which was nominated for the Grammy in Best New Age Album category.[3]
Recent projects[edit]
Kitaro playing in Tehran, October 2014
Kitaro playing with the orchestra in Tehran, 2014
Kitaro's latest studio album is Final Call, which is a homage to Kitaro's lifetime reverence for nature and was released in September 2013. A year later, in September 2014, his latest live album Symphony Live in Istanbul was released. It was recorded live at the Halic Congress Center in Istanbul, Turkey during Kitaro's Symphonic World Tour, balancing the artist's trademark signature sound and expanding it to new heights with the addition of a 38-piece chamber symphony orchestra. Both Final Call and Symphony Live in Istanbul were nominated for Best New Age Album, becoming Kitaro's 15th and 16th career Grammy Award nominations.[3] More recently he has reissued his critically acclaimed studio albums Kojiki in 2015 and Tenku in 2016.
Touring and other activities[edit]
In 2007 to 2009, he launched the "Love and Peace World Tour," an international tour with which Kitaro hoped to inspire his message of world peace with his music. Kitaro toured Southeast Asia in 2007, Greece in 2008 and Hong Kong, Japan, Southeast Asia in 2009. During his visit to Greece, Kitaro met Greek composer Vangelis, and exchanged musical experience and creative ideas.
In 2010, Kitaro performed in Singapore in March, in Mexico for the Zacatecas Cultural Festival in April,[17] in Xi'an, China for the opening event of Daming Palace National Heritage Park in September,[18] in Aichi, Japan, for the Thousand Drums Event at COP10 for the Convention on Biological Diversity in October. From March to April, 2011, Kitaro was on tour titled The Silk Road – East & West, visiting Thailand, Hong Kong, Indonesia, Singapore and Malaysia. He donated part of the CD sales and concert profits to Tōhoku earthquake and tsunami Relief.[19] For the same purpose he participated in the 2011 edition of Musicians United for Safe Energy.[3] In 2012 he released Let Mother Earth Speak, a collaboration album with Native American activist Dennis Banks.[3]
From around 1983 to 1990, Kitarō was married to Yuki Taoka, daughter of Kazuo Taoka. They have a son. In the early 1990s, he moved from Japan to the United States.[5][14] In the mid-1990s, he married Keiko Matsubara, a musician who played on several of his albums. Along with Keiko's son, the couple lived in Ward, Colorado, on a 180-acre (72.85 hectare) spread and composed in his 2500-square-foot (230 m²) home studio "Mochi House" (it is large enough to hold a 70-piece orchestra).[20] Around 2005, they relocated to Sebastopol, California.
Main article: Kitarō discography
Tenkai (1978)
Daichi (1979)
Oasis (1979)
Ki (1981)
Silver Cloud (1983)
Toward the West (1985)
Tenku (1986)
The Light of the Spirit (1987)
Kojiki (1990)
Mandala (1994)
Peace on Earth (1996)
Cirque Ingenieux (1997)
Gaia-Onbashira (1998)
Thinking of You (1999)
Ancient (2001)
An Ancient Journey (2002)
Sacred Journey of Ku-Kai Vol. 1 (2003)
Spiritual Garden (2006)
Final Call (2013)
Tours[edit]
1986: "Japan Tour" (17 cities)
1987: "1st North American Tour" (24 cities, 26 shows)
1989: "1st Europe Tour" (15 cities, 16 shows)
1990: "Kojiki World Tour" U.S., Japan, Europe (39 cities, 41 shows)
1992: "Dream World Tour" U.S., Japan, Asia
1992: "Her Majestry Queen" Sirikit Birthday Anniversary Concert, in Bangkok, Thailand
1994: "The Kitaro Mandala World Tour" Latin America Tour (4 cities, 6 shows)
1994: "The Kitaro Mandala World Tour" The USA Tour (32 shows)
1995: "Southeast Asia tour" (4 cities, 9 shows)
1995: "Kitaro Enchanted Evening Tour" (22 cities, 22 shows)
1997: "Kitaro's Peace on Earth Holiday Tour" in USA (5 cities, 5 shows)
1998: "Europe Tour" (13 cities)
1999: "Kitaro 1999 New Millennium World Tour in USA" (21cities)
1999: "Kitaro 1999 New Millennium World Tour in South America"
2000: "Kitaro Asia 2000" in Malaysia, Singapore, Hong Kong
2002: "The Silk Road Tour in USA" (6 cities)
2002: "The concert for 30th anniversary of diplomatic ties between Japan and China" in China (2 cities)
2004: "Asia Tour 2004" (7 cities, 8 shows)
2007: "Love & Peace World Tour 2007" in Philippines, Taiwan, Malaysia, Indonesia, Singapore, Thailand
2008: "Love & Peace World Tour 2008" in Athens
2009: "Love & Peace Planet Music Tour 2009" in Malaysia, Singapore, India, Japan, Hong Kong
2009: "31st Harmony Festival" in Santa Rosa, California
2009: "Silk Road Arts Festival" in Hong Kong, China
2010: "Love & Peace Planet Music Tour 2010" in Singapore
2010: "Zacatecas Cultural Festival" in Mexico
2010: "Opening Ceremony for 32nd Harmony Festival" in Santa Rosa, California
2010: "Opening Event of Daming Palace National Heritage Park" in Xi'an, China
2010: "Thousand Drums Event at COP10 for Convention on Biological Diversity" in Aichi, Japan
2010: "Asian Art Museum" in San Francisco, California
2011: "Silk Road East & West Tour" in Bangkok, Hong Kong, Jakarta, Singapore and Malaysia
2011: "Closing Ceremony for 33rd Harmony Festival" in Santa Rosa, California
2011: "Opening Ceremony for Musicians United For Safe Energy (MUSE) Benefit Concert" in Mountain View, California
2012: "Festival International Farosor 2012" in Montevideo, Uruguay
2014: "Symphonic World Tour 2014"
See also: Grammy Nominated (Kitaro)
Nominee / work
1987 The Field Best New Age Performance Nominated
1990 Kojiki Best New Age Album Nominated
1992 Dream Best New Age Album Nominated
1994 Mandala Best New Age Album Nominated
1995 An Enchanted Evening Best New Age Album Nominated
1998 Gaia Onbashira Best New Age Album Nominated
1999 Thinking Of You Best New Age Album Won
2002 Ancient Best New Age Album Nominated
2003 An Ancient Journey Best New Age Album Nominated
2004 Sacred Journey of Ku-Kai Volume 1 Best New Age Album Nominated
2009 Impressions Of The West Lake Best New Age Album Nominated
2013 Final Call Best New Age Album Nominated
2014 Symphony Live In Istanbul Best New Age Album Nominated
2017 Sacred Journey of Ku-Kai Vol. 5 Best New Age Album Nominated
1993 Heaven & Earth Best Original Score Won
Golden Horse Award (Hong Kong) Kitaro and Randy Miller won a Golden Horse Award for Best Original Score for the film Soong Sisters in 1997.[21]
Hong Kong Film Award Kitaro was nominated at the Hong Kong Film Awards for Best Original Film Score for Homecoming in 1985.[22] Kitaro and Randy Miller won a Hong Kong Film Award for Best Original Score for Soong Sisters in 1998.[21]
Japan Gold Disc Kitaro won a Gold Disc Award in the category of Fusion Instrumental for his album Kojiki in 1991.[23]
List of ambient music artists
^ a b c d e Kohanov, Linda. "Biography: Kitaro". Allmusic. Retrieved 22 May 2010.
^ a b c d "喜多郎" [Kitarō]. Nihon Jinmei Daijiten (日本人名大辞典) (in Japanese). Tokyo: Shogakukan. 2012. Archived from the original on 2007-08-25. Retrieved 2012-11-18.
^ a b c d e f g h "Kitaro". Domo Music Group. Retrieved 2015-09-29.
^ a b c Bonzai, Mr. (December 2007). "Kitaro's Sacred Journey". Keyboard. 33 (12): 38, 40, 42.
^ a b c Steven Rea (April 22, 1990). "Kitaro: The Japanese Sage Of New-age Sound". Philly.com. Retrieved August 24, 2016.
^ a b c d e Andrew (July 22, 2010). "Kitaro Interview". J-Pop World. Retrieved August 24, 2016.
^ a b c d Amy Duncan (April 14, 1987). "Composer Kitaro gaining attention in US. Japan's leading New Age artist says music should `set one free'". The Christian Science Monitor. Retrieved August 24, 2016.
^ Don Heckman (January 3, 1994). "Kitaro Brings Heavenly Touch to 'Earth' : Music: The New Age composer worked a year and a half on the film, trying to capture the Asian feeling Oliver Stone was looking for". Los Angeles Times. Retrieved August 24, 2016.
^ "Interview with Klaus Schulze". November 1994. Retrieved August 24, 2016.
^ 喜多郎 キタロウ. "喜多郎 / DIAA株式会社". Diaa.net. Retrieved 2014-02-04.
^ 50 Years of NHK Television (1980-04-07). "50 Years of NHK Television". Nhk.or.jp. Retrieved 2014-02-04.
^ "18th Galaxy Award Winners". houkon.jp (in Japanese). Retrieved August 24, 2016.
^ "Refund for Kitaro's shows". The Straits Times. September 14, 1984. p. 10.
^ a b Steve Appleford (October 28, 1994). "Playing to Emotions : Kitaro brings his New Age blend of rock, classical and folk to Universal Amphitheatre". Los Angeles Times. Retrieved August 24, 2016.
^ "Kitaro to move heaven and earth at Taipei show". The China Post. November 7, 2007. Retrieved 17 March 2012.
^ "Impression West Lake". Hangzhou Impression West Lake Culture Development Co. LTD. Archived from the original on 21 May 2012. Retrieved 7 December 2012.
^ "Kitaro conquistó a miles en Zacatecas". zacatecasonline.com. Retrieved 21 November 2012.
^ "Kitaro at Daming Palace National Heritage Park". bandsintown.com. Retrieved 21 November 2012.
^ "图:郑少秋汪明荃携手喜多郎举办演唱会". hexun.com. Retrieved 21 November 2012.
^ Zwiebel, Richard (August 1996). "Kitaro's Recording Studio". Mix. 20 (8): 52–54, 56–58. . Describes the Mochi House studio.
^ a b "The Soong Sisters (1997) : Awards". IMDb.com. Retrieved 2015-09-29.
^ "Kitarô : Awards". IMDb.com. Retrieved 2015-09-29.
^ "第5回日本ゴールドディスク大賞 / Gold Disc Hall of Fame 5th|The Gold Disc". Golddisc.jp. Retrieved 2014-02-04.
Wikimedia Commons has media related to Kitaro.
Kitaro's Official Website (English)
Kitaro's Official Channel on YouTube
Astral Voyage (1978)
Sacred Journey of Ku-Kai (2003)
Impressions of the West Lake (2009)
An Enchanted Evening (1995)
Daylight, Moonlight: Kitaro Live in Yakushiji (2002)
Symphony Live in Istanbul (2014)
Grammy Nominated (2010)
Soundtrack albums
Heaven & Earth (1993)
The Most Relaxing New Age Music in the Universe
Golden Globe Award for Best Original Score
Life with Father – Max Steiner (1947)
The Red Shoes – Brian Easdale (1948)
The Inspector General – Johnny Green (1949)
Sunset Boulevard – Franz Waxman (1950)
September Affair – Victor Young (1951)
High Noon – Dimitri Tiomkin (1952)
On the Beach – Ernest Gold (1959)
The Alamo – Dimitri Tiomkin (1960)
The Guns of Navarone – Dimitri Tiomkin (1961)
To Kill a Mockingbird – Elmer Bernstein (1962)
The Fall of the Roman Empire – Dimitri Tiomkin (1964)
Doctor Zhivago – Maurice Jarre (1965)
Hawaii – Elmer Bernstein (1966)
Camelot – Frederick Loewe (1967)
The Shoes of the Fisherman – Alex North (1968)
Butch Cassidy and the Sundance Kid – Burt Bacharach (1969)
Love Story – Francis Lai (1970)
Shaft – Isaac Hayes (1971)
The Godfather – Nino Rota (1972)
Jonathan Livingston Seagull – Neil Diamond (1973)
The Little Prince – Alan Jay Lerner, Frederick Loewe (1974)
Jaws – John Williams (1975)
A Star is Born – Kenneth Ascher, Paul Williams (1976)
Star Wars – John Williams (1977)
Midnight Express – Giorgio Moroder (1978)
Apocalypse Now – Carmine Coppola, Francis Ford Coppola (1979)
The Stunt Man – Dominic Frontiere (1980)
E.T. the Extra-Terrestrial – John Williams (1982)
Flashdance – Giorgio Moroder (1983)
A Passage to India – Maurice Jarre (1984)
Out of Africa – John Barry (1985)
The Mission – Ennio Morricone (1986)
The Last Emperor – David Byrne, Ryuichi Sakamoto, Cong Su (1987)
Gorillas in the Mist – Maurice Jarre (1988)
The Little Mermaid – Alan Menken (1989)
The Sheltering Sky – Richard Horowitz, Ryuichi Sakamoto (1990)
Beauty and the Beast – Alan Menken (1991)
Aladdin – Alan Menken (1992)
Heaven & Earth – Kitarō (1993)
The Lion King – Hans Zimmer (1994)
A Walk in the Clouds – Maurice Jarre (1995)
The English Patient – Gabriel Yared (1996)
Titanic – James Horner (1997)
The Truman Show – Burkhard Dallwitz, Philip Glass (1998)
1900 – Ennio Morricone (1999)
Gladiator – Lisa Gerrard, Hans Zimmer (2000)
Moulin Rouge! – Craig Armstrong (2001)
Frida – Elliot Goldenthal (2002)
The Lord of the Rings: The Return of the King – Howard Shore (2003)
The Aviator – Howard Shore (2004)
Memoirs of a Geisha – John Williams (2005)
The Painted Veil – Alexandre Desplat (2006)
Atonement – Dario Marianelli (2007)
Slumdog Millionaire – A. R. Rahman (2008)
Up – Michael Giacchino (2009)
The Social Network – Trent Reznor, Atticus Ross (2010)
The Artist – Ludovic Bource (2011)
Life of Pi – Mychael Danna (2012)
All Is Lost – Alex Ebert (2013)
The Theory of Everything – Jóhann Jóhannsson (2014)
The Hateful Eight – Ennio Morricone (2015)
La La Land – Justin Hurwitz (2016)
The Shape of Water – Alexandre Desplat (2017)
First Man - Justin Hurwitz (2018)
MusicBrainz: f3d8c154-208d-4efa-b52d-7e9f16adcdae
Retrieved from "https://en.wikipedia.org/w/index.php?title=Kitarō&oldid=902306276"
Grammy Award winners
Japanese electronic musicians
Japanese expatriates in the United States
Ambient musicians
New-age synthesizer players
Musicians from Aichi Prefecture
People from Toyohashi, Aichi
People from Boulder County, Colorado
People from Sebastopol, California
Wikipedia articles with CINII identifiers


I didn't look up how to do it. I went with my own idea and they turned out adorable and the reality is, it doesn't matter how anyone else ever made them, because this method is awesome. I am going to list the ingredients you need. I made about 18 of these. I APPROXIMATE that you can get about 15-20 "bottles" of polish from a 10 ounce bag of candy melts. I did a small amount of three colors to experiment. That being said, I will leave it up to you as to how many you need and will make.
Line a cookie sheet with parchment paper or foil. Unroll the tootsie rolls ahead of time. I used 2 skewers for dipping.
When you are ready to melt your candy melts, make sure to heat them for 30 seconds, then stir, 20 seconds and then stir, 10 seconds and stir, if needed. I added vegetable oil to mine to thin them out a bit, it makes dipping easier. Just use your own judgment, add in 1 tsp and see if it is thin enough for your liking. Stick your skewer into the middle of the marshmallow, dip in your melted candy, work quickly and cover the entire marshmallow. Make sure to let ALL of the excess drip off over your bowl or cup. I used a deeper small glass measuring cup so I didn't have to do a ton of work, there was enough I could dip it straight down and get it covered. Sit it up right on the cookie sheet and then add the "handle", the tootsie roll to the top. You may need to hold it for a couple of seconds so it will set. It is that easy! Refrigerate for at least 30 minutes before serving!
Have fun and enjoy them!!
DISCLAIMER: It is NOT safe to eat REAL nail polish. Please do not attempt to do so or let your children attempt to do so. Can you believe I really felt the need to do this?!


The cast pushes props and furniture onto the ice like a crystal-like grand piano or a living room set where Crystal's family mindlessly watches television. The creative minds behind Crystal played with scale and angles to perfect effect. An interactive show, it doesn't stay away from characters playing with the crowd like Crystal herself conversing with several audience members in the front row, or items thrown into cluster of people to be caught and thrown back.
Meanwhile, musical arrangements oscillate from pop culture songs like Sia's "Chandelier" to classical pieces, all accompanied by the different musicians playing the saxophone, violin, electric guitar, acoustic guitar, clarinet and even an accordion at various periods, some while gliding on the ice.
Aerial twists and flips, and characters performing terrifying moves in a seamless manner, like balancing their body on a minuscule stick, are executed perfectly — and not without teamwork.
At one point, Crystal and her partner show off their acrobatic talents through a series of harmonious and daring movements. In the end, the entire cast comes on stage to Crystal's version of U2's "Beautiful Day" and gifts the viewers one last number.
To watch the entirety of this show is to be immersed in an otherworldly dimension where art has no rules and creative boundaries beautifully dissipate.


I remember an Indian friend's another NRI (Non-resident Indian) friend getting kicked out by his father in Kochi (Kerala). I wondered if it was a property matter and I was told it was a "Water Issue". It turns out this NRI chap was bathing his child with 'Mineral water'. Infuriated (I am not surprised) the NRI's father asked him to leave home.
Are you traveling to India and Paranoid about eating and drinking safely? Then read on tips for safe drinking water in India from a tourist's perspective.
Is it safe to Drink Tap Water In India? NO, it isn't. Even Indians themselves drink water which has been boiled, filtered or passed through RO (Reverse osmosis (RO)) water purifiers.
I am an Indian born to wanderlust Indian parents. As a kid with my parents and now as an adult with my children, I have visited most of India including remote villages.
Never have I or my children ever had the case of 'Delhi Belly' or 'Diarrhea' because of drinking water.
We DO NOT BUY PLASTIC BOTTLED WATER as long as there is the availability of filtered or RO water. We do not drink from Tap Waters even at 5-star + Hotels.
There is more to tap water in India than what I have mentioned above and let me try to get you less paranoid about Indian water so that you can have a relaxed vacation in India.
Can you drink water at the Indian Railway Stations?
Many establishments including Indian Railway Platforms, Airports, Malls and Cinema Halls throughout India have water filters or purifiers installed.
If the water filter unit has an algae-looking layer of scum around the taps avoid drinking water from that unit. If the unit looks clean from outside there is a possibility it is clean from inside as well and in that case, the water may be safe to drink.
However, Boiled water, water in resturants and hotels from RO and bottled water is always your best bet.
Is it safe to drink tap water from the bathroom?
The answer is No it isn't safe to drink tap water from the bathroom.
Before I delve more on this topic, here is an interesting anecdote from my College days.
In the plush hostel that I stayed in while pursuing my law degree, we were not allowed to use any electric apparatus inside the room.
So what would we do if we wanted to eat Maggi? We turned on the geyser (pre-installed water heater) inside the bathroom, filled our cups with hot water and put Maggi in it!
Ingenious we thought the idea was, at least at that time, as a mother and as a travel curator I would advise against doing any such "not so genius" Jugaad.
Side Note: Jugaad is a flexible approach to problem-solving that uses limited resources in an innovative way.
No. It is not necessary to boil the tap water used for washing hands.
Can you brush your teeth with tap water in India?
Any tap water that might be swallowed should be boiled, filtered, from RO or should be from bottled water.
I think with all the traveling that we do, my kids are used to water from various places in India and we have safely brushed our teeth from tap waters. I cannot say that this tip will stand true for Non Indians.
Is it safe to Shower & shave with Tap water in India?
It is safe to shower (unless you swallow water while bathing), bathe and Shave with Tap Water in India. If you have had your Vaccinations before traveling to India, then waterborne germs that you are not ingesting shouldn't be a problem for an odd nick from the razor.
Infants and toddlers should be sponge bathed to avoid the risk of them swallowing water. At least for face use boiled & cooled (to room temperature) water.
Is it safe to boil tap water and drink it?
Boiling makes the tap water microbiologically safe as it kills disease-causing microorganisms such as bacteria, viruses, or protozoans.
If you are in a Homestay or in an Airbnb kind of setup, you can boil water yourself.
Bring tap water to a full boiling point. Let it boil for one full minute. Then let it cool before using.
What if there is no stovetop available to boil water? If there is no stovetop available but a microwave is available, you can boil water in the microwave to make it safe. In a microwave-safe container bring the water to a full boiling point for a minute.
Does one need boiled water for washing clothes or flushing the toilet?
Well the answer is NO in case you are still wondering!!
Is drinking from Bottled Water Safe in India?
If you are buying a bottle from a decent sized shop or a restaurant, then the chances are that the bottled water has not been tampered with.
As a safety precaution, remember to always check the seal!
Once you are done drinking from any bottled water, it is advisable to crush it so that it cannot be used to fill spurious liquid and be sold again in the market.
I prefer to ask for RO or filtered water as I can see the source of water.
Which brand of bottled water should you buy in India? It is advisable to stick to brewery brands, as most have related bottled water brands. Giant companies like Coca-Cola and Pepsi own brands like Bisleri, Kinley, and Aquafina and these brands are available in most parts of India.
Boiled water or Bottled water?
Your health comes first so take a well-informed decision when using anything which comes bottled in PLASTIC.
It is easy to fall in the trap of buying 'enriched' water right from the lap of the pristine valleys of the Himalayas or whatever that trips your trigger.
When we travel or do a day Trip/Picnic, we choose mainly non-plastic reusable water containers made of food-grade safe materials like stainless steel and glass. We fill our bottles at places where filtered or RO water is available.
Not only is bottled water expensive, remember that "Plastic pollutes!" If you are in the hilly parts of India, recycling in those parts is tougher than the plains. All plastic bottles that are not recycled end up being piling up as landfill waste.
Long story cut short, Bottled water is a convenience which is too expensive for our health, environment and water availability (Quote from here).
Can pets drink tap water in india?
Since most of India's tap water is unfit for consumption I would rather not give my pet tap water to drink.
At home our pet drinks only filtered water. When we travel out pet drinks from the same source of water as us.
I really wouldn't want you to be out of action for a week due to a 'Delhi Belly' so if you can, do use boiled, filtered or RO water wherever available. If not, the easy way out is Bottled Water.


Motivate yourself to stay active and fit with the Fitbit alta Fitness Wristband. This slim accessory is great for getting you to keep moving throughout the day, with hourly step goals, an informative, clear OLED screen, and a sleep tracker.. Fitbit Alta Accessory Band.
Bed bath and beyond has various Fitbit Alta colors and sizes for $99.99, that is $30 less than amazon and $50 less on the retail price. Not as good as .
Bed, Bath & Beyond. . Motivation is your best accessory with Fitbit Alta—a fitness wristband with all-day activity and sleep. Fitbit Charge 2 Fitness Wristband.
Related Post "Fitbit Alta Bed Bath And Beyond"


Washington, DC -- July 24, 2012 -- The U.S. Department of Education (ED) and theConsumer Financial Protection Bureau (CFPB) released a final version of their financial aid Shopping Sheet. The final version incorporated public feedback including many recommendations submitted by NASFAA.
The Shopping Sheet is one of several initiatives aimed at increasing consumer information for students and parents. As part of this effort NASFAA also released recommendations from its Award Letter and Consumer Information Task Force.
"We appreciate that the CFPB and Department of Education incorporated the recommendations of financial aid administrators when revising the financial aid Shopping Sheet," said NASFAA President Justin Draeger. "While we are pleased that institutions are not required to adopt the Shopping Sheet, we remain concerned with the inflexible standardization of the Shopping Sheet, and more broadly, with the multitude of consumer disclosure initiatives that have been introduced in recent months. Institutions need flexibility to design a financial aid award letter that best meets the needs of their unique student populations.
"As such, we encourage campuses to carefully review the Shopping Sheet before adopting it to ensure it will effectively communicate this critical information to the students and families they serve.
"We value efforts to increase the effectiveness of financial aid award letters. NASFAA fully supports the need for accurate, clear and relevant information regarding college costs and financial aid."


Women who deliver babies during night time, weekends and even on holidays are more likely to face complications, finds a new study. The study, published in Risk Analysis journal, showed that the odds of a mother experiencing a delivery complication are 21.3 per cent higher during night time.
A mother delivering a baby on a weekend is 8.6 per cent more likely to encounter a complication than a mother delivering on a weekday, while the risk of delivery complications were found to increase by 29 per cent on holidays. Obstetric care in hospital settings is a team effort and ineffective teamwork has been implicated in an estimated 75 per cent of preventable medical errors, said Sammy Zahran, Associate Professor from the Colorado State University in the US.
"Across an ensemble of hospital situations where clinical quality is known to vary independently of patient characteristics and volume, we see the corresponding variation in the risk of preventable harm to expectant mothers," Zahran said.


Our current Traffic Reports for the Washington DC area can be heard Monday through Friday during the morning and afternnon drive times. Plus, older traffic reports can be heard on our YouTube Channel.
In the future we hope to expand that to include morning reports as well as other markets.
The current traffic conditions for the Washington DC metroplitan area will return at a later date.
We are currently offering live traffic updates through our Twitter sites.


In order to participate in the Small Business Administration's (SBA's) service-disabled veteran-owned small business contracting program, a business must meet certain criteria. An SDVOSB business is defined in federal regulations as a business not less than 51% owned by one or more service-disabled veterans who also control its management and daily business operations.
It is important to understand the nuanced rules and regulations that give flesh to this definition, as understanding them can mitigate both the risk of a protest being filed against your business and prevent a protest from being sustained. A sustained protest would not only result in denying you that federal government contracting opportunity, but it would also cause your firm's removal from the VetBiz Vendor Information Pages (VIP) database until you can show that it does in fact meet the requirements for SDVOSB Program eligibility.
If you are a service-disabled veteran pursuing opportunities in the SDVOSB Program, I can assist in verifying that your business meets the eligibility requirements. I can also assist in addressing and resolving issues with SDVOSB Program eligibility. This will help mitigate the chance of protest, prevent protests from being sustained, and protect your stake in federal government contract opportunities.
My mission is to provide accessible, high-quality legal services to small business owners and to veterans. I will strive to clearly communicate, understand objectives, and formulate and execute effective legal solutions.
This website is maintained exclusively for informational purposes. It is not intended to provide legal or other professional advice and does not necessarily represent the opinions of the lawyer or her clients. Viewing this site, using information from it, or communicating with Sarah Schauerte through this site by email does not create an attorney-client relationship.
Online readers should not act nor decline to act, based on content from this site, without first consulting an attorney or other appropriate professional. Because the law changes frequently, this website's content may not indicate the current state of the law. Nothing on this site is meant to predict or guarantee future results. I am not liable for the use or interpretation of information contained on this website, and expressly disclaim all liability for any actions you take or fail to take, based on this website's content.
I do not necessarily endorse and am not responsible for content accessed through this website's links to other Internet resources. Correctness and adequacy of information on those sites is not guaranteed, and unless otherwise stated, I am not associated with such linked sites.
You may email me through the email address provided by this site, but information you send through email or this website is not secure and may not be confidential. Communications will not be treated as privileged unless I already represent you. Do not send confidential information until you have established a formal attorney-client relationship with me. Even if I represent you, please understand that email security is still uncertain and that you accept all risks of such uncertainty and potential lack of confidentiality when you send us unencrypted, sensitive, or confidential email. Email from me never constitutes an electronic signature, unless it expressly says so.


There were more than 146,000 workplace-reported injuries in B.C in 2014.
It's that astonishing stat that prompted local app developer Ryan Gallagher to improve safety culture in high-risk industries, such as construction, manufacturing and mining.
"A lot of the businesses we talk to really know that complacency with the workforce is a key issue and they want to find a way to improve safety culture," said Gallagher.
He explained it may seem easy for a job site manager or foreman to ask if an employee wore a hard hat or safety glasses, but it is more difficult to get the workforce to care about a safety culture.
Through MotivationEngine, a platform was created to measure safety engagement and to improve the effectiveness of two-way communication about the safety needs on every job.
"People get daily cues and reminders on their daily work routine and the hazards that exist. It is very simple for the worker or foremen, and it reinforces some of the key behaviours that are necessary for their work role, team or crew," said Gallagher.
Gallagher gave the example of a construction Safety Director who addresses his team leaders automatically through the platform by asking if they have completed key safety routines and tasks. The foremen or managers can then check in with the safety leader during the day, via an app on their smart phone, tablet or computer that they carry as part of their job.
"Every day, the Safety Director may want to ask, 'Are there any issues I need to be aware of on the job site?'" And normally the foremen or supervisors might simply respond 'No'. In the case where an answer to a question should trigger a follow-up however, the Safety Director is immediately notified and action can be taken much more quickly."BT Mancini Co., one of the U.S.'s largest specialty construction contractors, recently won a major US award for improving workplace safety and the company acknowledged MotivationEngine for their help in achieving the accolade.
Every day there are people killed or injured on the job from preventable accidents resulting from complacency or small lapses in awareness, said Gallagher.


2015 Volume 6 San-Z Countries [SC-C156] - $25.00 : Potomac Supplies, offering everything stamp collectors need!
More than 10,000 value changes were made in Volume 6, which includes countries of the world from San Marino through Zululand. In general, the market remains stable, with classic issues and stamps from the last decade rising in value.
There were a large number of changes for several African nations - Somalia and Swaziland had almost 800 each. There was also extensive activity in South America with 1,550 value changes in Venezuela and more than 1,300 in Vanuatu.


text:
Eric Adams (Auburn, New York, 12 juli 1954) is sinds de oprichting zanger van de heavymetalband Manowar.

Muziek
Adams zingt zeer krachtig en gevarieerd. Hij kan een hoge noot meer dan 40 seconden aanhouden. Veel heavymetalaanhangers waarderen hem vanwege zijn stem.

Duet
In 2002 nam Eric Adams samen met de bekende Engelse zangeres Sarah Brightman het duet Where Eagles Fly op, maar deze muziek is nooit verschenen. Toen aan Adams de vraag werd gesteld waardoor dit kwam, antwoordde hij: That's not up to us.

Film
Adams nam ook een dvd op met Chester Moore over het leven en jagen in het wild. Deze dvd was getiteld Wild Life and Wild Times.

Discografie
Zie Manowar

Amerikaans zanger

redpajama_set_name: RedPajamaWikipedia


text:
Total: US$
Discover Las Vegas
English / USD $
A hotel so good they named it twice
Costing $460 million, the New York, New York Hotel and Casino complex opened on January 3, 1997. It's an amazingly lifelike representation of the New York skyline.
New York, New York, Las Vegas style.
The buildings themselves consist of several towers resembling the Empire State Building, the Chrysler Building and others. In front of the hotel there is a 150-foot (46-meter) tall replica of the Statue of Liberty and a lake representing New York Harbor. The casino within is named after Central Park, and the shops are inspired by Greenwich Village.
Catch the roller coaster to the restaurant
You're not imagining things. There's actually a roller coaster (looking like New York cabs) at New York, New York hotel that travels through the property's interior and exterior. It can zoom you around at up to 67 mph (107 kph).
Let a big bus take you there
New York, New York hotel is one of the must-see sights in Las Vegas. With our Las Vegas Bus Tour you can hop off right on the doorstep and hop back on again when you've seen enough.
Other interesting facts about New York, New York, Las Vegas
At the New York, New York hotel's casino, apples replace the hearts in the playing cards
The US Post Office used the replica of The Statue of Liberty at New York, New York on one of their stamps, thinking it was the real thing
The New York, New York hotel has 2,024 rooms and the casino occupies 84,000 sq ft (7,800 m2)
A statue of Julius Caesar welcomes you on your Big Bus Las Vegas tour at the entrance to Caesars Palace. Find the best shops, casinos and restaurants.
The Paris Hotel
With cobblestoned sidewalks and the Eiffel Tower high above, you could be forgiven for thinking you're in France while on your Big Bus Las Vegas tour.
Want to see Venice in Las Vegas? Look around while on your Big Bus Vegas tour and you'll be amazed at the lifelike imitations of the Floating City's landmarks.
The Luxor Hotel
This homage to ancient Egypt is simply stunning and well worth a visit. The Luxor is one the biggest hotels in the United States. Check Big Bus Tours Vegas.
Welcome to Fabulous Las Vegas Sign
In a town full of neon lights, the relatively humble "Welcome to Fabulous Las Vegas" sign is the most famous of them all. Find out more at Big Bus Tours.
3 Day Hop-on, hop-off
Live guides
Regular departures
Classic Ticket + Madame Tussauds Package
Madame Tussauds entry
Linq Auto Museum
3-Day Tour & Ultimate Grand Canyon West Rim Package
Grand Canyon West Rim Tour
3-Day Tour & Ultimate Grand Canyon South Rim Package
Grand Canyon South Rim Tour
Classic Ticket + Mob Museum

redpajama_set_name: RedPajamaCommonCrawl


Hooray for millennial pink! Your darling girl is going to love the shots of glittering grey through this stylish dog leash. Backed with black nylon webbing for strength, and features a stainless steel clip.


Happy New Year -- Let's HOP!
Happy New Year! Hopefully you have arrived here from Beth's blog, and have had the chance to go through our hop with us. If not, stop right now and head on over to the Design Team Blog. We have new stamps for the New Year! You won't want to miss what the Team has in store for you this hop, and it is a great way to see this month's new stamps in action.
Don't forget - all of the January Release Stamps are 15% off until January 8th. Who doesn't want to save a little this time of year?
I paired it up with the Pom Pom Swag Stamp (released this fall) 'cause I continue to be in love with that stamp. Its so festive! The background was made using a new product called MINX -- I am rolling it out to you later this month. TO DIE FOR shimmer!
Next, another couple of stamps that are dear to me, since I am a voracious reader (well, truthfully, I mainly listen to books on tape since I travel so much!). The background uses a large stamp called Books, and the sentiment is one from the new Bookworms Set. If you love to read, you should check it out!
Finally -- this sweet dog from the Let's Roll set. I cropped this one a little funk, but you get the idea! It is a set of two, with the dog/truck stamp and Lets Roll stamp separate. I chose to put my sentiment inside the card. Ever have a dog that loved car rides? I have two of them that do!
The background stamp used here is the Medium Porcelain Crackle Background. It is a stamp that has been in the line for years and years -- and it is still current!
As for me...I am one happy 2016-er. Technique Junkies is moving along full-speed ahead, and I am so excited to continue to share new things with you! New Ideas, New Stamps, New Techniques -- everything coming this year has an aura of excitement. Strap in and enjoy the ride!


text:
Home » Hiking Parks Gardens » On The Way to Yosemite: North Entrance
On The Way to Yosemite: North Entrance
Why hurry to Yosemite National Park when the journey can be as rewarding as the destination? The Yosemite Region encompasses four gateway counties, each with its own unique set of attractions. DogTrekker is celebrating Yosemite's 150th anniversary with a look at places and diversions for DogTrekkers to check out along the major highway corridors leading to the iconic park.
Cabo in Groveland. Photo: Doug Pieper
Trek with us along Highway 120 through the North (Big Oak Flat) Entrance in Tuolumne County.
The rugged area known as Big Oak Flat has a history much more colorful than its name. John Savage and his five Native American wives, who opened a trading post near a grand old oak tree that gave the place its name, settled it during the earliest days of the Gold Rush.
Modern Highway 120 through dog-friendly Groveland bypasses the original Big Oak Flat wagon route, but you can still drive a precarious section of the original route, signed Old Priest Grade. Look for the signs as you approach Groveland; the OPG will reconnect with Highway 120 after a few hair-raising miles. (Note: If your human or canine passengers are prone to carsickness, you might want to skip this scenic detour!)
Travelers coming from Sacramento or the Bay Area have several choices for getting from Highway 99 to Groveland and the Big Oak Flat park entrance. Here are some options:
• Highway 132 out of Modesto follows the Tuolumne River gorge to the colorful Gold Rush town of Coulterville, where the historic and dog-friendly Hotel Jeffery beckons DogTrekkers to stay overnight or just sit a spell on the porch. The entire town, from Magnolia Saloon's bat-wing doors, to the antique shops, artifacts and colorful locals, harks back to the iconic TV Westerns of old.
From Coulterville, head north through Greeley Hill to Smith Station Road and up to Highway 120. This is the recently designated John Muir Highway, which follows the achingly picturesque route the famous naturalist took as he walked from San Francisco to Yosemite in 1868.
• The more heavily traveled route to Yosemite is Highway 120 out of Manteca, best known to Highway 99 passers-by as home to an enormous Bass Pro Shop, where you can pick up fishing gear as well as dog supplies for your trip (sorry, no dogs allowed inside). The road begins its twisty climb into the mountains at Oakdale, where a quick stop at the Visitors Center will yield maps and literature to help guide your trip.
The Stanislaus National Forest surrounding Highway 120 is a recreational wonderland with many day-hike opportunities. If you have four-wheel drive, get a map and make a detour to Trumbull Peak Special Interest Area, where a 45-foot fire lookout tower looms large over the Merced River. On a clear day, the tower offers panoramic views of Yosemite Valley. While we don't recommend hauling Fido up the stairs, the two of you will enjoy hiking on surrounding trails.
Groveland, where many Yosemite visitors make base camp for forays into the park, is another Gold Rush town worthy of exploration. But if you arrive on a hot afternoon and have energy to spare, keep going. About 15 miles past the town, on the right-hand side of the road, is Rainbow Falls and Pools, a series of popular and very picturesque swimming holes on the South Fork of the Tuolumne River. A parking lot and restrooms are provided, access is free and your pup is welcome to splash in the pools with you.
At the end of an active day, it's nice to come home to a hot shower and a soft bed—and the beds don't get any softer than the "mile high" feather versions at the very dog-friendly Groveland Hotel, whose fine-dining restaurant spills onto a dog-friendly patio. Offering similar Victorian charm is the Hotel Charlotte, with three pet-friendly rooms and a location right in the center of this highly walkable town.
Time out for Tuolumne County (Yosemite north entrance)
The rugged country leading up to Yosemite's Big Oak Flat (North) entrance boasts a pioneer history as rough-hewn… Read more.
Yo, Little Yosemite!
Don't have time to visit the real Yosemite Valley? Little Yosemite, a scenic gorge on Alameda Creek in… Read more.
Dogs at Yosemite National Park
Yes, you can and should have your dog tag along on your next visit to Yosemite National Park,… Read more.
Hit the trails near Yosemite
What better way to enjoy the mountains for bipeds and quadrupeds alike than by being out on a… Read more.
Yosemite gushers
Late winter and early spring are great times to visit Yosemite National Park, but be sure to read… Read more.
Relax on the River: Yosemite View Lodge
Yosemite View Lodge has been family-owned and family-friendly (that includes four-legged family members!) for nearly 50 years. Rich… Read more.


text:
var _foo = /*#__PURE__*/new WeakMap();

var Foo = /*#__PURE__*/function () {
  "use strict";

  function Foo() {
    babelHelpers.classCallCheck(this, Foo);
    babelHelpers.classPrivateFieldInitSpec(this, _foo, {
      writable: true,
      value: 1
    });
  }

  babelHelpers.createClass(Foo, [{
    key: "test",
    value: function test() {
      var _babelHelpers$classPr;

      var _foo2 = /*#__PURE__*/new WeakMap();

      _babelHelpers$classPr = babelHelpers.classPrivateFieldGet(this, _foo2);

      var Nested = /*#__PURE__*/function () {
        function Nested() {
          babelHelpers.classCallCheck(this, Nested);
          babelHelpers.classPrivateFieldInitSpec(this, _foo2, {
            writable: true,
            value: 2
          });
        }

        babelHelpers.createClass(Nested, [{
          key: _babelHelpers$classPr,
          value: function () {}
        }]);
        return Nested;
      }();

      babelHelpers.classPrivateFieldGet(this, _foo);
    }
  }]);
  return Foo;
}();

redpajama_set_name: RedPajamaGithub


text:
Napoli beat Roma to go 13 points clear in the Serie A
Leagues: Champions League
UEFA Champions League Matchday 5 Preview: Real Madrid-PSG clash headlines week for the Battle of European giants
by World Soccer Talk February 27, 2020 EST
As the UEFA Champions League group stages edge closer to a dramatic finish, match-day five will probably determine who goes forward to the knockout stages and who misses the cut.
The stakes are high all across the eight groups, but the game with the brightest spotlight is in group A when Real Madrid host Paris Saint-Germain in the reverse fixture of the big clash.
The Parisians tore apart the former European champions in the opening match-day, thrashing them 3-0 to stake the claim of a group win. Zinedine Zidane laid into his players for their lack of intensity that day, but things have genuinely improved since then.
Madrid are flying high joint-top of the La Liga table and playing some sizzling attacking football. They're undefeated in their last six games, while PSG also comes into the game on the back of a convincing win over Lille to consolidate their lead at the pinnacle of Ligue 1.
In what is expected to be a tactical, but fascinating encounter between two brilliant sets of attacks, Los Blancos will be gunning for revenge. Whether or not Zidane can put on another European masterclass at Thomas Tuchel's expense remains to be seen.
Liverpool also hosts Napoli at Anfield looking to consolidate their grip on top of Group E, and are the bookmakers' favourites in the Champions League betting online to win this game. It's not set in stone though, as the Reds have suffered their only defeat this season to Carlo Ancelotti's side. Napoli themselves have had some problems recently after their players showcased a mini-mutiny against club ownership.
The Reds have a difficult December ahead, so they'll come firing on all cylinders to get the win. With Mohamed Salah being benched in their weekend win over Crystal Palace for this, the Egyptian will look to mount the misery on the Italian and inspire Liverpool to another majestic night at Anfield.
Juventus will also look to guarantee their own group win when they take on 2nd place Atletico Madrid at home. Maurizio Sarri opted to not include Cristiano Ronaldo against Atalanta at the weekend, giving him some time to cool off.
The Portuguese will be raring to play against a side he loves scoring against, having netted 7 Champions League goals in 9 meetings.
Atletico are going through a rough patch themselves, but knowing their defensive strength and unpredictability going forward, they could cause an upset over Sarri's growing side.
A repeat of last year's Champions League round of 16 game, this should be an action-packed encounter to determine who gets Group D's bragging rights.
Barcelona also take on underperforming Borussia Dortmund, where Lionel Messi will look to power them to another European victory and grant them a comfortable spot in the knockout stages.
Chelsea travel to Valencia looking to keep themselves ahead of Ajax in Group H, but the Spaniard's mojo at home could make grinding a victory that much more difficult for Frank Lampard's side.
Jose Mourinho takes charge of his first European game as Tottenham Hotspur manager looking for a dominant win, while Manchester City will also look to solidify their group win on Tuesday.
Here are all of the details of where you can watch Derby County vs. West Ham United on US television and via legal streaming: WHO Derby County vs. West Ham United WHAT FA Cup WHEN 2:45pm ET / 11:45am PT • Monday, January 30, 2023 WHERE ESPN+ STREAM WATCH NOW With ESPN+, you can watch […]
Serie A league leaders Napoli beat Roma 2-1 in an enthralling contest at the Diego Armando Maradona Stadium on Sunday evening. With both AC Milan and Juventus losing earlier on the day, Napoli took full advantage as the result sees them go 13 points clear of second-placed Inter Milan at the table's summit. Osimhen stunner […]
It was a seismic weekend in the Scottish Premiership. A four-way tie for last and a manager sacking added to the drama after big wins for Ross County and Hibs. Only 10 points separate 12th from 5th. With ten games remaining before the league splits, it's still unclear who will fill out the top 6 […]
Wrexham helping to grow the reach of soccer in the USA
When hit TV series Welcome to Wrexham premiered in the fall of 2022, few could have predicted that the show would help grow the popularity of soccer across the United States. But indeed it has, as well as creating a passionate fanbase of Wrexham supporters throughout North America. So, what measurable impact has Wrexham had […]


The library built with MtxVec is one of the fastest and most complete C# statistical libraries.
The trial versions of all our products (MtxVec, FFT Properties, Dew Math Library, Dew Lab Studio) can be used for unlimited time if used for educational purposes.
All prices in USD are fixed. Prices in EUR can adjust according to the exchange rate every 1st of the month. Purchase orders can be mailed or emailed directly to our address. All products can be purchased on-line via Share-it registration service or by direct wire transfer.
All products support .NET v2.0 and newer. After the order is placed, you willl receive an email with login information to download the purchased products.
License for MtxVec covers all MtxVec versions. This includes versions 1.51, 2.1, 3 and 4. Registered users have their upgrade options listed on their private download pages.


This unique, cost effective drain pollution guard has been designed to stop pollutants at the front line. Filtering hydrocarbons and sediment beore they enter a drain, it is an extremely popular product for construction sites, civil work sites, retail centres and parking lots.
The service and value for money we have received from Argyle is second to none.


Every 98 seconds, someone experiences sexual violence in America. Out of every 1,000 reported cases, only six people will see time in prison, according to RAINN.org. Since the Fall 2018 semester began at Grand Valley State University, the Grand Valley Police Department has received reports of sexual violence nearly every week from students living on or near campus. Though some students have reported their situations, only 31 percent of all sexual violence cases are reported.
With waves of white and blue filling the stands, it was an all-hands-on-deck gameday for members of the Grand Valley Police Department. Officers from GVPD, the Ottawa County Sheriff's Department and Ferris State collaborated to handle the high attendance and spirits surrounding the game.
The crash happened just before 11 p.m. Thursday on Pierce Street near 52nd Avenue in Allendale Township. According to Grand Valley State Police, a 19-year-old GVSU student from Rochester, Mich. was turning left into the Mystic Woods Apartment complex when another car attempted to pass on the inside and caused the collision.
In an effort to ensure campus safety and easy access to emergency services, Grand Valley State University has recently updated their Laker Guardian app and encourage students and faculty to download it on their mobile devices. Have you ever been afraid to walk from class to your car? Do you get worried during your past-dark workouts? Have you ever been on a first date that's left you feeling uncomfortable? Now, thanks to a collaboration between the Grand Valley Police Department and RaveGuardian, the Laker Guardian app provides students with a virtual buddy when safety concerns arise.
Grand Valley State University has recently added sworn law enforcement officials to the downtown Grand Rapids' campus to serve alongside already stationed security. In the past, most of the university's footprint was held on the Allendale campus, so not as many officers were needed downtown.
Law enforcement is concerned about a recent city-wide development involving individuals targeting houses, cars and people using paintball guns. These "paintball wars" are on the rise across many cities and pose a troubling issue for community members who wish to keep their neighborhood streets safe.
A recent study by The Lancet has found that moderate drinking doesn't carry the health-related benefits many once thought it did, and many are calling for the guidelines that constitute moderate drinking to be revisited.
Recently, Grand Valley State University student Renee Vredenburg created a petition to install emergency blue lights on campus, citing the chance to make the campus more safe. Now, Vredenburg is preparing to propose the installation of emergency blue lights to student senate on Thursday, April 12.


Fasting has shown to increase cellular stress response, which is impaired with age. Aging is cellular degradation; it's quite simply a loss of function. Free radicals, which are toxic byproducts of metabolism, latch on to and destroy healthy cells and cause aging.
The moment that you're born, the second law of thermodynamics, also known as the universal forces of entropy, which degrades all living things, begins to attack you. It's just what it is, and you can't do anything to change that.
You can, however, choose to not accept death so easily. You do in fact have the equipment to defend yourself.
This natural arsenal of weaponry to combat aging includes all the natural rejuvenation processes to fight off oxidative damage, such as the antioxidant system (any collection of enzymes that serve as a person's natural cellular defense mechanisms). And guess what can help you use it to the fullest possible extent. You guessed it. Fasting is one of the two ways to combat premature aging (the other being exercise).
It's no wonder nature favors the lean and wiry. Fasting is an acute stressor, much like exercise, and through stressors, your body can thrive. In fact, hunger and exercise are specifically the primal rejuvenation triggers.
Studies have shown, again and again, that the human body flourishes when faced with physical and nutritional challenges. In fact, a 1982 study found that mice fed every other day outlived mice fed regularly by 82 percent. This rejuvenation happens through the process of autophagy.
Furthermore, eating, especially heavy eating, actually hastens the aging process. Too much insulin and mTOR overactivity speed up the rate of cellular degradation. And so, as you may expect, people combat aging by not eating.
Physical hardship, or stress, isn't what kills people. Pleasures are what kill people. Overindulgence is what kills people. Through stress, people thrive, and hardship makes the body grow stronger. In other words, those people who eat less tend to live longer. But there's more to it than that. People who eat less also tend to live healthier.


text:
Stories from Thursday, October 10, 2013
Authorities search for Morley bank robbery suspects (Local News ~ 10/10/13)
BENTON -- Police are searching for two suspects involved in an armed bank robbery early Thursday in Morley. According to Scott County Sheriff Rick Walter, the robbery occurred around 8 a.m. as an employee was opening the First Commercial Bank on U.S. Highway 61 in Morley...
Prep Roundup: Oran takes step toward district title (High School Sports ~ 10/10/13)
sports@standard-democrat.com POPLAR BLUFF -- Aubrianna Jones put the Oran Lady Eagles softball team in the Class 1, District 1 championship game Thursday earning a 3-0 win over Neelyville in Poplar Bluff. Jones struck out seven in a complete game effort and walked just one...
Dock outduels Tiffany in Class 2, District 1 battle (High School Sports ~ 10/10/13)
sports@standard-democrat.com BENTON -- Thursday's Class 2, District 1 semifinal matchup of Kelly and Portageville featured two of the top pitchers in Southeast Missouri as Alexis Dock and Taylor Tiffany squaring off to keep their teams' season alive...
Inmate charged with possession of weapon in jail (Local News ~ 10/10/13)
CHARLESTON -- A Mississippi County inmate is facing additional charges after officers discovered a weapon made from a drinking glass. According to Mississippi County Sheriff Keith Moore, the investigation began when a corrections officer noticed a drinking cup had not been returned by an inmate in C-pod of the Mississippi County Detention Center...
Sikeston Job and Career Fair (Local News ~ 10/10/13)
Railroad crossings closed (Local News ~ 10/10/13)
Maxine Choate (Obituary ~ 10/10/13)
AIKEN, S.C. -- Maxine Choate, 93, died Oct. 9, 2013, at Pepper Hill Nursing Center in Aiken. For the complete Standard Democrat obituary log in to our electronic edition.
Robbie Blasingain (Obituary ~ 10/10/13)
EAST PRAIRIE -- Robbie Clarence Blasingain, 34, died Oct. 9, 2013, at his home. For the complete Standard Democrat obituary log in to our electronic edition.
Lawrence Gates (Obituary ~ 10/10/13)
CAMPBELL -- Lawrence Daniel Gates, 36, died Oct. 7, 2013, at St. Louis University Hospital in St. Louis. For the complete Standard Democrat obituary log in to our electronic edition.
Juanita Howard (Obituary ~ 10/10/13)
SIKESTON -- Juanita Howard, 61, died at 9:15 a.m. Oct. 2, 2013, at her home. For the complete Standard Democrat obituary log in to our electronic edition.
Jenny Palmer (Obituary ~ 10/10/13)
DEXTER -- Beulah "Jenny" Palmer, 93, died Oct. 8, 2013, at Cypress Point Skilled Nursing Center in Dexter. For the complete Standard Democrat obituary log in to our electronic edition.
Jerry Albritton (Obituary ~ 10/10/13)
SIKESTON -- Jerry R. Albritton Jr., 51, died Oct. 5, 2013, in Albuquerque, N.M. For the complete Standard Democrat obituary log in to our electronic edition.
Nina Kimes (Obituary ~ 10/10/13)
PORTAGEVILLE -- Nina Mae Kimes, 74, died Oct. 8, 2013, at her home. For the complete Standard Democrat obituary log in to our electronic edition.
Sikeston woman reports rape to DPS (Local News ~ 10/10/13)
SIKESTON -- A rape is under investigation by the Sikeston Department of Public Safety. At 2:30 a.m. Wednesday, DPS officers were called to a residence in the 400 block of North Ingram. The 25-year-old victim told officers a black male had gained entry to the home and raped her, according to Capt. Jim McMillen, DPS public information officer...
SPEAKOUT (Opinion ~ 10/10/13)
My biggest fear about the government shutdown is that it will start up again. Our drug enforcers and drug testers need to get their education up with the druggies. These girls being tested go in and test with someone else's urine. DEA needs to do a cavity search on every female being tested, plus no purses allowed in the test room, and with the males buying someone else's urine has a whizzinator to extract the urine. ...
Miner Police arrest Caruthersville man for drugs (Local News ~ 10/10/13)
MINER -- A Caruthersville man was arrested on drug charges by the Miner Police after a routine traffic stop. According to a news release, officers with the Miner Police Department stopped a speeding southbound vehicle on Interstate 55. The officers made contact with the occupants and after speaking with the driver and conducting a field investigation, it was determined that the driver didn't have a valid driver's license...
Nuisance properties discussed by Commission (Local News ~ 10/10/13)
scottw@standard-democrat.com CHARLESTON -- Mississippi County may need to lien on a bank to get action out of them. County officials discussed during the regular County Commission meeting Thursday what action to take on a foreclosed home that is not in compliance with the county's nuisance ordinance...


text:
Santa Barbara Film Fest's Virtuosos Winners Range From Sam Elliott to Elsie Fisher
Other honorees are Richard E. Grant, Claire Foy, John David Washington, Thomasin McKenzie, Steven Yeun and Yalitza Aparicio
Steve Pond | December 11, 2018 @ 10:01 AM	Last Updated: December 11, 2018 @ 10:11 AM
Warner Bros/ / A24
The Santa Barbara International Film Festival has announced the winners of its 2019 Virtuosos Award, who range from a 74-year-old actor who has made more than 50 films, Sam Elliott, to a 15-year-old actress who has only appeared onscreen a handful of times, Elsie Fisher.
Elliott will be honored for his performance in Bradley Cooper's "A Star Is Born," while Fisher will receive her award for her starring role in Bo Burnham's "Eighth Grade."
Other SBIFF Virtuosos honorees are Richard E. Grant ("Can You Ever Forgive Me?"), Claire Foy ("First Man"), John David Washington ("BlacKkKlansman"), Thomasin McKenzie ("Leave No Trace"), Steven Yeun ("Burning") and Yalitza Aparicio ("Roma").
Also Read: AFI's Top 10 List Ranges From 'Black Panther' and 'A Star Is Born' to 'First Reformed' and 'Eighth Grade'
The awards will be presented on Tuesday, Feb. 5, 2019 at the Arlington Theatre, during the festival that will run from Jan. 30 through Feb. 9 in the coastal town north of Los Angeles.
Past recipients of the Virtuosos Award, which is handed out to a group of actors in the awards conversation every year, include Timothee Chalamet, Daniel Kaluuya, Casey Affleck, Viola Davis, Saoirse Ronan, Mahershala Ali, Paul Dano and Rosamund Pike.
2019 Oscar Contenders, From Rami Malek to Spike Lee to Glenn Close (Exclusive Photos)
Actor Rami Malek, "Bohemian Rhapsody"
Photographed by Shayan Asgharnia for TheWrap
Actress Yalitza Aparicio, "Roma"
Photographed by Irvin Rivera for TheWrap
Stylist: Monica Cargile
Hair: Matilde Campos
Makeup: Brandy Allen
Actor Willem Dafoe, "At Eternity's Gate"
Actress KiKi Layne and director Barry Jenkins, "If Beale Street Could Talk"
Photographed by Matt Sayles for TheWrap
Actor John David Washington and director Spike Lee, "BlacKkKlansman"
Director Spike Lee, "BlacKkKlansman"
Chadwick Boseman and Michael B. Jordan, "Black Panther"
Actress Glenn Close, "The Wife"
Photographed by Corina Marie for TheWrap
Rami Malek, "Bohemian Rhapsody"
John David Washington, Spike Lee and Adam Driver, "Blackkklansman"
Alfonso Cuarón, "Roma"
Actresses Marina de Tavira and Yalitza Aparicio, "Roma"
Writer-director Barry Jenkins, "If Beale Street Could Talk"
Actress Regina King, "If Beale Street Could Talk"
Actor-writer-director Bradley Cooper and actor Sam Elliott, "A Star is Born"
Actress Olivia Colman, "The Favourite"
Actors Richard E. Grant and Melissa McCarthy, "Can You Ever Forgive Me?"
Director Peter Farrelly, stars Viggo Mortensen, Mahershala Ali and Linda Cardellini, "Greenbook"
Actor Mahershala Ali, "Green Book"
Songwriter Diane Warren, "RBG"
Photographed by Marissa Mooney for TheWrap
Composer Nicholas Britell, "If Beale Street Could Talk,
Photographed by Megan Mack for TheWrap
Marina de Tavira, "Roma"
Songwriter Scott Wittman, "Mary Poppins Returns
Composer-songwriter Marc Shaiman, "Mary Poppins Returns"
Songwriter Sounwave, "Black Panther"
Songwriters Scott Wittman and Marc Shaiman, "Mary Poppins Returns"
Director Yorgos Lanthimos, "The Favourite"
Photographed by Elisabeth Caren for TheWrap
Willem Dafoe, Marhershala Ali, Regina King and more are nominees for this Sunday's ceremony
'Minding the Gap' Wins Top Honor at IDA Documentary Awards
By Steve Pond | December 8, 2018 @ 9:38 PM
'Barry' Leads Writers Guild Awards TV Nominations
By Jeremy Fuster | December 6, 2018 @ 1:26 PM
'Incredibles 2,' 'Ralph Breaks the Internet' Are Top Toons in Annie Awards Nominations
By Steve Pond | December 3, 2018 @ 8:00 AM


text:
/* Driver for Philips webcam
   Functions that send various control messages to the webcam, including
   video modes.
   (C) 1999-2003 Nemosoft Unv.
   (C) 2004-2006 Luc Saillard (luc@saillard.org)
   (C) 2011 Hans de Goede <hdegoede@redhat.com>

   NOTE: this version of pwc is an unofficial (modified) release of pwc & pcwx
   driver and thus may have bugs that are not present in the original version.
   Please send bug reports and support requests to <luc@saillard.org>.

   NOTE: this version of pwc is an unofficial (modified) release of pwc & pcwx
   driver and thus may have bugs that are not present in the original version.
   Please send bug reports and support requests to <luc@saillard.org>.
   The decompression routines have been implemented by reverse-engineering the
   Nemosoft binary pwcx module. Caveat emptor.

   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
*/

/*
   Changes
   2001/08/03  Alvarado   Added methods for changing white balance and
			  red/green gains
 */

/* Control functions for the cam; brightness, contrast, video mode, etc. */

#ifdef __KERNEL__
#include <asm/uaccess.h>
#endif
#include <asm/errno.h>

#include "pwc.h"
#include "pwc-kiara.h"
#include "pwc-timon.h"
#include "pwc-dec1.h"
#include "pwc-dec23.h"

/* Selectors for status controls used only in this file */
#define GET_STATUS_B00				0x0B00
#define SENSOR_TYPE_FORMATTER1			0x0C00
#define GET_STATUS_3000				0x3000
#define READ_RAW_Y_MEAN_FORMATTER		0x3100
#define SET_POWER_SAVE_MODE_FORMATTER		0x3200
#define MIRROR_IMAGE_FORMATTER			0x3300
#define LED_FORMATTER				0x3400
#define LOWLIGHT				0x3500
#define GET_STATUS_3600				0x3600
#define SENSOR_TYPE_FORMATTER2			0x3700
#define GET_STATUS_3800				0x3800
#define GET_STATUS_4000				0x4000
#define GET_STATUS_4100				0x4100	/* Get */
#define CTL_STATUS_4200				0x4200	/* [GS] 1 */

/* Formatters for the Video Endpoint controls [GS]ET_EP_STREAM_CTL */
#define VIDEO_OUTPUT_CONTROL_FORMATTER		0x0100

static const char *size2name[PSZ_MAX] =
{
	"subQCIF",
	"QSIF",
	"QCIF",
	"SIF",
	"CIF",
	"VGA",
};

/********/

/* Entries for the Nala (645/646) camera; the Nala doesn't have compression
   preferences, so you either get compressed or non-compressed streams.

   An alternate value of 0 means this mode is not available at all.
 */

#define PWC_FPS_MAX_NALA 8

struct Nala_table_entry {
	char alternate;			/* USB alternate setting */
	int compressed;			/* Compressed yes/no */

	unsigned char mode[3];		/* precomputed mode table */
};

static unsigned int Nala_fps_vector[PWC_FPS_MAX_NALA] = { 4, 5, 7, 10, 12, 15, 20, 24 };

static struct Nala_table_entry Nala_table[PSZ_MAX][PWC_FPS_MAX_NALA] =
{
#include "pwc-nala.h"
};

static void pwc_set_image_buffer_size(struct pwc_device *pdev);

/****************************************************************************/

static int _send_control_msg(struct pwc_device *pdev,
	u8 request, u16 value, int index, void *buf, int buflen)
{
	int rc;
	void *kbuf = NULL;

	if (buflen) {
		kbuf = kmalloc(buflen, GFP_KERNEL); /* not allowed on stack */
		if (kbuf == NULL)
			return -ENOMEM;
		memcpy(kbuf, buf, buflen);
	}

	rc = usb_control_msg(pdev->udev, usb_sndctrlpipe(pdev->udev, 0),
		request,
		USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
		value,
		index,
		kbuf, buflen, USB_CTRL_SET_TIMEOUT);

	kfree(kbuf);
	return rc;
}

static int recv_control_msg(struct pwc_device *pdev,
	u8 request, u16 value, void *buf, int buflen)
{
	int rc;
	void *kbuf = kmalloc(buflen, GFP_KERNEL); /* not allowed on stack */

	if (kbuf == NULL)
		return -ENOMEM;

	rc = usb_control_msg(pdev->udev, usb_rcvctrlpipe(pdev->udev, 0),
		request,
		USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
		value,
		pdev->vcinterface,
		kbuf, buflen, USB_CTRL_GET_TIMEOUT);
	memcpy(buf, kbuf, buflen);
	kfree(kbuf);

	if (rc < 0)
		PWC_ERROR("recv_control_msg error %d req %02x val %04x\n",
			  rc, request, value);
	return rc;
}

static inline int send_video_command(struct pwc_device *pdev,
	int index, void *buf, int buflen)
{
	return _send_control_msg(pdev,
		SET_EP_STREAM_CTL,
		VIDEO_OUTPUT_CONTROL_FORMATTER,
		index,
		buf, buflen);
}

int send_control_msg(struct pwc_device *pdev,
	u8 request, u16 value, void *buf, int buflen)
{
	return _send_control_msg(pdev,
		request, value, pdev->vcinterface, buf, buflen);
}

static int set_video_mode_Nala(struct pwc_device *pdev, int size, int frames)
{
	unsigned char buf[3];
	int ret, fps;
	struct Nala_table_entry *pEntry;
	int frames2frames[31] =
	{ /* closest match of framerate */
	   0,  0,  0,  0,  4,  /*  0-4  */
	   5,  5,  7,  7, 10,  /*  5-9  */
	  10, 10, 12, 12, 15,  /* 10-14 */
	  15, 15, 15, 20, 20,  /* 15-19 */
	  20, 20, 20, 24, 24,  /* 20-24 */
	  24, 24, 24, 24, 24,  /* 25-29 */
	  24                   /* 30    */
	};
	int frames2table[31] =
	{ 0, 0, 0, 0, 0, /*  0-4  */
	  1, 1, 1, 2, 2, /*  5-9  */
	  3, 3, 4, 4, 4, /* 10-14 */
	  5, 5, 5, 5, 5, /* 15-19 */
	  6, 6, 6, 6, 7, /* 20-24 */
	  7, 7, 7, 7, 7, /* 25-29 */
	  7              /* 30    */
	};

	if (size < 0 || size > PSZ_CIF || frames < 4 || frames > 25)
		return -EINVAL;
	frames = frames2frames[frames];
	fps = frames2table[frames];
	pEntry = &Nala_table[size][fps];
	if (pEntry->alternate == 0)
		return -EINVAL;

	memcpy(buf, pEntry->mode, 3);
	ret = send_video_command(pdev, pdev->vendpoint, buf, 3);
	if (ret < 0) {
		PWC_DEBUG_MODULE("Failed to send video command... %d\n", ret);
		return ret;
	}
	if (pEntry->compressed && pdev->pixfmt == V4L2_PIX_FMT_YUV420) {
		ret = pwc_dec1_init(pdev, pdev->type, pdev->release, buf);
		if (ret < 0)
			return ret;
	}

	pdev->cmd_len = 3;
	memcpy(pdev->cmd_buf, buf, 3);

	/* Set various parameters */
	pdev->vframes = frames;
	pdev->vsize = size;
	pdev->valternate = pEntry->alternate;
	pdev->image = pwc_image_sizes[size];
	pdev->frame_size = (pdev->image.x * pdev->image.y * 3) / 2;
	if (pEntry->compressed) {
		if (pdev->release < 5) { /* 4 fold compression */
			pdev->vbandlength = 528;
			pdev->frame_size /= 4;
		}
		else {
			pdev->vbandlength = 704;
			pdev->frame_size /= 3;
		}
	}
	else
		pdev->vbandlength = 0;
	return 0;
}

static int set_video_mode_Timon(struct pwc_device *pdev, int size, int frames, int compression, int snapshot)
{
	unsigned char buf[13];
	const struct Timon_table_entry *pChoose;
	int ret, fps;

	if (size >= PSZ_MAX || frames < 5 || frames > 30 || compression < 0 || compression > 3)
		return -EINVAL;
	if (size == PSZ_VGA && frames > 15)
		return -EINVAL;
	fps = (frames / 5) - 1;

	/* Find a supported framerate with progressively higher compression ratios
	   if the preferred ratio is not available.
	*/
	pChoose = NULL;
	while (compression <= 3) {
	   pChoose = &Timon_table[size][fps][compression];
	   if (pChoose->alternate != 0)
	     break;
	   compression++;
	}
	if (pChoose == NULL || pChoose->alternate == 0)
		return -ENOENT; /* Not supported. */

	memcpy(buf, pChoose->mode, 13);
	if (snapshot)
		buf[0] |= 0x80;
	ret = send_video_command(pdev, pdev->vendpoint, buf, 13);
	if (ret < 0)
		return ret;

	if (pChoose->bandlength > 0 && pdev->pixfmt == V4L2_PIX_FMT_YUV420) {
		ret = pwc_dec23_init(pdev, pdev->type, buf);
		if (ret < 0)
			return ret;
	}

	pdev->cmd_len = 13;
	memcpy(pdev->cmd_buf, buf, 13);

	/* Set various parameters */
	pdev->vframes = frames;
	pdev->vsize = size;
	pdev->vsnapshot = snapshot;
	pdev->valternate = pChoose->alternate;
	pdev->image = pwc_image_sizes[size];
	pdev->vbandlength = pChoose->bandlength;
	if (pChoose->bandlength > 0)
		pdev->frame_size = (pChoose->bandlength * pdev->image.y) / 4;
	else
		pdev->frame_size = (pdev->image.x * pdev->image.y * 12) / 8;
	return 0;
}

static int set_video_mode_Kiara(struct pwc_device *pdev, int size, int frames, int compression, int snapshot)
{
	const struct Kiara_table_entry *pChoose = NULL;
	int fps, ret;
	unsigned char buf[12];
	struct Kiara_table_entry RawEntry = {6, 773, 1272, {0xAD, 0xF4, 0x10, 0x27, 0xB6, 0x24, 0x96, 0x02, 0x30, 0x05, 0x03, 0x80}};

	if (size >= PSZ_MAX || frames < 5 || frames > 30 || compression < 0 || compression > 3)
		return -EINVAL;
	if (size == PSZ_VGA && frames > 15)
		return -EINVAL;
	fps = (frames / 5) - 1;

	/* special case: VGA @ 5 fps and snapshot is raw bayer mode */
	if (size == PSZ_VGA && frames == 5 && snapshot && pdev->pixfmt != V4L2_PIX_FMT_YUV420)
	{
		/* Only available in case the raw palette is selected or
		   we have the decompressor available. This mode is
		   only available in compressed form
		*/
		PWC_DEBUG_SIZE("Choosing VGA/5 BAYER mode.\n");
		pChoose = &RawEntry;
	}
	else
	{
		/* Find a supported framerate with progressively higher compression ratios
		   if the preferred ratio is not available.
		   Skip this step when using RAW modes.
		*/
		snapshot = 0;
		while (compression <= 3) {
			pChoose = &Kiara_table[size][fps][compression];
			if (pChoose->alternate != 0)
				break;
			compression++;
		}
	}
	if (pChoose == NULL || pChoose->alternate == 0)
		return -ENOENT; /* Not supported. */

	PWC_TRACE("Using alternate setting %d.\n", pChoose->alternate);

	/* usb_control_msg won't take staticly allocated arrays as argument?? */
	memcpy(buf, pChoose->mode, 12);
	if (snapshot)
		buf[0] |= 0x80;

	/* Firmware bug: video endpoint is 5, but commands are sent to endpoint 4 */
	ret = send_video_command(pdev, 4 /* pdev->vendpoint */, buf, 12);
	if (ret < 0)
		return ret;

	if (pChoose->bandlength > 0 && pdev->pixfmt == V4L2_PIX_FMT_YUV420) {
		ret = pwc_dec23_init(pdev, pdev->type, buf);
		if (ret < 0)
			return ret;
	}

	pdev->cmd_len = 12;
	memcpy(pdev->cmd_buf, buf, 12);
	/* All set and go */
	pdev->vframes = frames;
	pdev->vsize = size;
	pdev->vsnapshot = snapshot;
	pdev->valternate = pChoose->alternate;
	pdev->image = pwc_image_sizes[size];
	pdev->vbandlength = pChoose->bandlength;
	if (pdev->vbandlength > 0)
		pdev->frame_size = (pdev->vbandlength * pdev->image.y) / 4;
	else
		pdev->frame_size = (pdev->image.x * pdev->image.y * 12) / 8;
	PWC_TRACE("frame_size=%d, vframes=%d, vsize=%d, vsnapshot=%d, vbandlength=%d\n",
	    pdev->frame_size,pdev->vframes,pdev->vsize,pdev->vsnapshot,pdev->vbandlength);
	return 0;
}

/**
   @pdev: device structure
   @width: viewport width
   @height: viewport height
   @frame: framerate, in fps
   @compression: preferred compression ratio
   @snapshot: snapshot mode or streaming
 */
int pwc_set_video_mode(struct pwc_device *pdev, int width, int height, int frames, int compression, int snapshot)
{
	int ret, size;

	PWC_DEBUG_FLOW("set_video_mode(%dx%d @ %d, pixfmt %08x).\n", width, height, frames, pdev->pixfmt);
	size = pwc_decode_size(pdev, width, height);
	if (size < 0) {
		PWC_DEBUG_MODULE("Could not find suitable size.\n");
		return -ERANGE;
	}
	PWC_TRACE("decode_size = %d.\n", size);

	if (DEVICE_USE_CODEC1(pdev->type)) {
		ret = set_video_mode_Nala(pdev, size, frames);

	} else if (DEVICE_USE_CODEC3(pdev->type)) {
		ret = set_video_mode_Kiara(pdev, size, frames, compression, snapshot);

	} else {
		ret = set_video_mode_Timon(pdev, size, frames, compression, snapshot);
	}
	if (ret < 0) {
		PWC_ERROR("Failed to set video mode %s@%d fps; return code = %d\n", size2name[size], frames, ret);
		return ret;
	}
	pdev->view.x = width;
	pdev->view.y = height;
	pdev->vcompression = compression;
	pdev->frame_total_size = pdev->frame_size + pdev->frame_header_size + pdev->frame_trailer_size;
	pwc_set_image_buffer_size(pdev);
	PWC_DEBUG_SIZE("Set viewport to %dx%d, image size is %dx%d.\n", width, height, pwc_image_sizes[size].x, pwc_image_sizes[size].y);
	return 0;
}

static unsigned int pwc_get_fps_Nala(struct pwc_device *pdev, unsigned int index, unsigned int size)
{
	unsigned int i;

	for (i = 0; i < PWC_FPS_MAX_NALA; i++) {
		if (Nala_table[size][i].alternate) {
			if (index--==0) return Nala_fps_vector[i];
		}
	}
	return 0;
}

static unsigned int pwc_get_fps_Kiara(struct pwc_device *pdev, unsigned int index, unsigned int size)
{
	unsigned int i;

	for (i = 0; i < PWC_FPS_MAX_KIARA; i++) {
		if (Kiara_table[size][i][3].alternate) {
			if (index--==0) return Kiara_fps_vector[i];
		}
	}
	return 0;
}

static unsigned int pwc_get_fps_Timon(struct pwc_device *pdev, unsigned int index, unsigned int size)
{
	unsigned int i;

	for (i=0; i < PWC_FPS_MAX_TIMON; i++) {
		if (Timon_table[size][i][3].alternate) {
			if (index--==0) return Timon_fps_vector[i];
		}
	}
	return 0;
}

unsigned int pwc_get_fps(struct pwc_device *pdev, unsigned int index, unsigned int size)
{
	unsigned int ret;

	if (DEVICE_USE_CODEC1(pdev->type)) {
		ret = pwc_get_fps_Nala(pdev, index, size);

	} else if (DEVICE_USE_CODEC3(pdev->type)) {
		ret = pwc_get_fps_Kiara(pdev, index, size);

	} else {
		ret = pwc_get_fps_Timon(pdev, index, size);
	}

	return ret;
}

static void pwc_set_image_buffer_size(struct pwc_device *pdev)
{
	int factor = 0;

	/* for V4L2_PIX_FMT_YUV420 */
	switch (pdev->pixfmt) {
	case V4L2_PIX_FMT_YUV420:
		factor = 6;
		break;
	case V4L2_PIX_FMT_PWC1:
	case V4L2_PIX_FMT_PWC2:
		factor = 6; /* can be uncompressed YUV420P */
		break;
	}

	/* Set sizes in bytes */
	pdev->image.size = pdev->image.x * pdev->image.y * factor / 4;
	pdev->view.size  = pdev->view.x  * pdev->view.y  * factor / 4;

	/* Align offset, or you'll get some very weird results in
	   YUV420 mode... x must be multiple of 4 (to get the Y's in
	   place), and y even (or you'll mixup U & V). This is less of a
	   problem for YUV420P.
	 */
	pdev->offset.x = ((pdev->view.x - pdev->image.x) / 2) & 0xFFFC;
	pdev->offset.y = ((pdev->view.y - pdev->image.y) / 2) & 0xFFFE;
}

int pwc_get_u8_ctrl(struct pwc_device *pdev, u8 request, u16 value, int *data)
{
	int ret;
	u8 buf;

	ret = recv_control_msg(pdev, request, value, &buf, sizeof(buf));
	if (ret < 0)
		return ret;

	*data = buf;
	return 0;
}

int pwc_set_u8_ctrl(struct pwc_device *pdev, u8 request, u16 value, u8 data)
{
	int ret;

	ret = send_control_msg(pdev, request, value, &data, sizeof(data));
	if (ret < 0)
		return ret;

	return 0;
}

int pwc_get_s8_ctrl(struct pwc_device *pdev, u8 request, u16 value, int *data)
{
	int ret;
	s8 buf;

	ret = recv_control_msg(pdev, request, value, &buf, sizeof(buf));
	if (ret < 0)
		return ret;

	*data = buf;
	return 0;
}

int pwc_get_u16_ctrl(struct pwc_device *pdev, u8 request, u16 value, int *data)
{
	int ret;
	u8 buf[2];

	ret = recv_control_msg(pdev, request, value, buf, sizeof(buf));
	if (ret < 0)
		return ret;

	*data = (buf[1] << 8) | buf[0];
	return 0;
}

int pwc_set_u16_ctrl(struct pwc_device *pdev, u8 request, u16 value, u16 data)
{
	int ret;
	u8 buf[2];

	buf[0] = data & 0xff;
	buf[1] = data >> 8;
	ret = send_control_msg(pdev, request, value, buf, sizeof(buf));
	if (ret < 0)
		return ret;

	return 0;
}

int pwc_button_ctrl(struct pwc_device *pdev, u16 value)
{
	int ret;

	ret = send_control_msg(pdev, SET_STATUS_CTL, value, NULL, 0);
	if (ret < 0)
		return ret;

	return 0;
}

/* POWER */
void pwc_camera_power(struct pwc_device *pdev, int power)
{
	char buf;
	int r;

	if (!pdev->power_save)
		return;

	if (pdev->type < 675 || (pdev->type < 730 && pdev->release < 6))
		return;	/* Not supported by Nala or Timon < release 6 */

	if (power)
		buf = 0x00; /* active */
	else
		buf = 0xFF; /* power save */
	r = send_control_msg(pdev,
		SET_STATUS_CTL, SET_POWER_SAVE_MODE_FORMATTER,
		&buf, sizeof(buf));

	if (r < 0)
		PWC_ERROR("Failed to power %s camera (%d)\n",
			  power ? "on" : "off", r);
}

static int pwc_set_wb_speed(struct pwc_device *pdev, int speed)
{
	unsigned char buf;

	/* useful range is 0x01..0x20 */
	buf = speed / 0x7f0;
	return send_control_msg(pdev,
		SET_CHROM_CTL, AWB_CONTROL_SPEED_FORMATTER, &buf, sizeof(buf));
}

static int pwc_get_wb_speed(struct pwc_device *pdev, int *value)
{
	unsigned char buf;
	int ret;

	ret = recv_control_msg(pdev,
		GET_CHROM_CTL, AWB_CONTROL_SPEED_FORMATTER, &buf, sizeof(buf));
	if (ret < 0)
		return ret;
	*value = buf * 0x7f0;
	return 0;
}

static int pwc_set_wb_delay(struct pwc_device *pdev, int delay)
{
	unsigned char buf;

	/* useful range is 0x01..0x3F */
	buf = (delay >> 10);
	return send_control_msg(pdev,
		SET_CHROM_CTL, AWB_CONTROL_DELAY_FORMATTER, &buf, sizeof(buf));
}

static int pwc_get_wb_delay(struct pwc_device *pdev, int *value)
{
	unsigned char buf;
	int ret;

	ret = recv_control_msg(pdev,
		GET_CHROM_CTL, AWB_CONTROL_DELAY_FORMATTER, &buf, sizeof(buf));
	if (ret < 0)
		return ret;
	*value = buf << 10;
	return 0;
}

int pwc_set_leds(struct pwc_device *pdev, int on_value, int off_value)
{
	unsigned char buf[2];
	int r;

	if (pdev->type < 730)
		return 0;
	on_value /= 100;
	off_value /= 100;
	if (on_value < 0)
		on_value = 0;
	if (on_value > 0xff)
		on_value = 0xff;
	if (off_value < 0)
		off_value = 0;
	if (off_value > 0xff)
		off_value = 0xff;

	buf[0] = on_value;
	buf[1] = off_value;

	r = send_control_msg(pdev,
		SET_STATUS_CTL, LED_FORMATTER, &buf, sizeof(buf));
	if (r < 0)
		PWC_ERROR("Failed to set LED on/off time (%d)\n", r);

	return r;
}

static int pwc_get_leds(struct pwc_device *pdev, int *on_value, int *off_value)
{
	unsigned char buf[2];
	int ret;

	if (pdev->type < 730) {
		*on_value = -1;
		*off_value = -1;
		return 0;
	}

	ret = recv_control_msg(pdev,
		GET_STATUS_CTL, LED_FORMATTER, &buf, sizeof(buf));
	if (ret < 0)
		return ret;
	*on_value = buf[0] * 100;
	*off_value = buf[1] * 100;
	return 0;
}

static int _pwc_mpt_reset(struct pwc_device *pdev, int flags)
{
	unsigned char buf;

	buf = flags & 0x03; // only lower two bits are currently used
	return send_control_msg(pdev,
		SET_MPT_CTL, PT_RESET_CONTROL_FORMATTER, &buf, sizeof(buf));
}

int pwc_mpt_reset(struct pwc_device *pdev, int flags)
{
	int ret;
	ret = _pwc_mpt_reset(pdev, flags);
	if (ret >= 0) {
		pdev->pan_angle = 0;
		pdev->tilt_angle = 0;
	}
	return ret;
}

static int _pwc_mpt_set_angle(struct pwc_device *pdev, int pan, int tilt)
{
	unsigned char buf[4];

	/* set new relative angle; angles are expressed in degrees * 100,
	   but cam as .5 degree resolution, hence divide by 200. Also
	   the angle must be multiplied by 64 before it's send to
	   the cam (??)
	 */
	pan  =  64 * pan  / 100;
	tilt = -64 * tilt / 100; /* positive tilt is down, which is not what the user would expect */
	buf[0] = pan & 0xFF;
	buf[1] = (pan >> 8) & 0xFF;
	buf[2] = tilt & 0xFF;
	buf[3] = (tilt >> 8) & 0xFF;
	return send_control_msg(pdev,
		SET_MPT_CTL, PT_RELATIVE_CONTROL_FORMATTER, &buf, sizeof(buf));
}

int pwc_mpt_set_angle(struct pwc_device *pdev, int pan, int tilt)
{
	int ret;

	/* check absolute ranges */
	if (pan  < pdev->angle_range.pan_min  ||
	    pan  > pdev->angle_range.pan_max  ||
	    tilt < pdev->angle_range.tilt_min ||
	    tilt > pdev->angle_range.tilt_max)
		return -ERANGE;

	/* go to relative range, check again */
	pan  -= pdev->pan_angle;
	tilt -= pdev->tilt_angle;
	/* angles are specified in degrees * 100, thus the limit = 36000 */
	if (pan < -36000 || pan > 36000 || tilt < -36000 || tilt > 36000)
		return -ERANGE;

	ret = _pwc_mpt_set_angle(pdev, pan, tilt);
	if (ret >= 0) {
		pdev->pan_angle  += pan;
		pdev->tilt_angle += tilt;
	}
	if (ret == -EPIPE) /* stall -> out of range */
		ret = -ERANGE;
	return ret;
}

static int pwc_mpt_get_status(struct pwc_device *pdev, struct pwc_mpt_status *status)
{
	int ret;
	unsigned char buf[5];

	ret = recv_control_msg(pdev,
		GET_MPT_CTL, PT_STATUS_FORMATTER, &buf, sizeof(buf));
	if (ret < 0)
		return ret;
	status->status = buf[0] & 0x7; // 3 bits are used for reporting
	status->time_pan = (buf[1] << 8) + buf[2];
	status->time_tilt = (buf[3] << 8) + buf[4];
	return 0;
}

#ifdef CONFIG_USB_PWC_DEBUG
int pwc_get_cmos_sensor(struct pwc_device *pdev, int *sensor)
{
	unsigned char buf;
	int ret = -1, request;

	if (pdev->type < 675)
		request = SENSOR_TYPE_FORMATTER1;
	else if (pdev->type < 730)
		return -1; /* The Vesta series doesn't have this call */
	else
		request = SENSOR_TYPE_FORMATTER2;

	ret = recv_control_msg(pdev,
		GET_STATUS_CTL, request, &buf, sizeof(buf));
	if (ret < 0)
		return ret;
	if (pdev->type < 675)
		*sensor = buf | 0x100;
	else
		*sensor = buf;
	return 0;
}
#endif

 /* End of Add-Ons                                    */
 /* ************************************************* */

/* Linux 2.5.something and 2.6 pass direct pointers to arguments of
   ioctl() calls. With 2.4, you have to do tedious copy_from_user()
   and copy_to_user() calls. With these macros we circumvent this,
   and let me maintain only one source file. The functionality is
   exactly the same otherwise.
 */

/* define local variable for arg */
#define ARG_DEF(ARG_type, ARG_name)\
	ARG_type *ARG_name = arg;
/* copy arg to local variable */
#define ARG_IN(ARG_name) /* nothing */
/* argument itself (referenced) */
#define ARGR(ARG_name) (*ARG_name)
/* argument address */
#define ARGA(ARG_name) ARG_name
/* copy local variable to arg */
#define ARG_OUT(ARG_name) /* nothing */

/*
 * Our ctrls use native values, but the old custom pwc ioctl interface expects
 * values from 0 - 65535, define 2 helper functions to scale things. */
static int pwc_ioctl_g_ctrl(struct v4l2_ctrl *ctrl)
{
	return v4l2_ctrl_g_ctrl(ctrl) * 65535 / ctrl->maximum;
}

static int pwc_ioctl_s_ctrl(struct v4l2_ctrl *ctrl, int val)
{
	return v4l2_ctrl_s_ctrl(ctrl, val * ctrl->maximum / 65535);
}

long pwc_ioctl(struct pwc_device *pdev, unsigned int cmd, void *arg)
{
	long ret = 0;

	switch(cmd) {
	case VIDIOCPWCRUSER:
		ret = pwc_button_ctrl(pdev, RESTORE_USER_DEFAULTS_FORMATTER);
		break;

	case VIDIOCPWCSUSER:
		ret = pwc_button_ctrl(pdev, SAVE_USER_DEFAULTS_FORMATTER);
		break;

	case VIDIOCPWCFACTORY:
		ret = pwc_button_ctrl(pdev, RESTORE_FACTORY_DEFAULTS_FORMATTER);
		break;

	case VIDIOCPWCSCQUAL:
	{
		ARG_DEF(int, qual)

		if (vb2_is_streaming(&pdev->vb_queue)) {
			ret = -EBUSY;
			break;
		}

		ARG_IN(qual)
		if (ARGR(qual) < 0 || ARGR(qual) > 3)
			ret = -EINVAL;
		else
			ret = pwc_set_video_mode(pdev, pdev->view.x, pdev->view.y, pdev->vframes, ARGR(qual), pdev->vsnapshot);
		break;
	}

	case VIDIOCPWCGCQUAL:
	{
		ARG_DEF(int, qual)

		ARGR(qual) = pdev->vcompression;
		ARG_OUT(qual)
		break;
	}

	case VIDIOCPWCPROBE:
	{
		ARG_DEF(struct pwc_probe, probe)

		strcpy(ARGR(probe).name, pdev->vdev.name);
		ARGR(probe).type = pdev->type;
		ARG_OUT(probe)
		break;
	}

	case VIDIOCPWCGSERIAL:
	{
		ARG_DEF(struct pwc_serial, serial)

		strcpy(ARGR(serial).serial, pdev->serial);
		ARG_OUT(serial)
		break;
	}

	case VIDIOCPWCSAGC:
	{
		ARG_DEF(int, agc)
		ARG_IN(agc)
		ret = v4l2_ctrl_s_ctrl(pdev->autogain, ARGR(agc) < 0);
		if (ret == 0 && ARGR(agc) >= 0)
			ret = pwc_ioctl_s_ctrl(pdev->gain, ARGR(agc));
		break;
	}

	case VIDIOCPWCGAGC:
	{
		ARG_DEF(int, agc)
		if (v4l2_ctrl_g_ctrl(pdev->autogain))
			ARGR(agc) = -1;
		else
			ARGR(agc) = pwc_ioctl_g_ctrl(pdev->gain);
		ARG_OUT(agc)
		break;
	}

	case VIDIOCPWCSSHUTTER:
	{
		ARG_DEF(int, shutter)
		ARG_IN(shutter)
		ret = v4l2_ctrl_s_ctrl(pdev->exposure_auto,
				       /* Menu idx 0 = auto, idx 1 = manual */
				       ARGR(shutter) >= 0);
		if (ret == 0 && ARGR(shutter) >= 0)
			ret = pwc_ioctl_s_ctrl(pdev->exposure, ARGR(shutter));
		break;
	}

	case VIDIOCPWCSAWB:
	{
		ARG_DEF(struct pwc_whitebalance, wb)
		ARG_IN(wb)
		ret = v4l2_ctrl_s_ctrl(pdev->auto_white_balance,
				       ARGR(wb).mode);
		if (ret == 0 && ARGR(wb).mode == PWC_WB_MANUAL)
			ret = pwc_ioctl_s_ctrl(pdev->red_balance,
					       ARGR(wb).manual_red);
		if (ret == 0 && ARGR(wb).mode == PWC_WB_MANUAL)
			ret = pwc_ioctl_s_ctrl(pdev->blue_balance,
					       ARGR(wb).manual_blue);
		break;
	}

	case VIDIOCPWCGAWB:
	{
		ARG_DEF(struct pwc_whitebalance, wb)
		ARGR(wb).mode = v4l2_ctrl_g_ctrl(pdev->auto_white_balance);
		ARGR(wb).manual_red = ARGR(wb).read_red =
			pwc_ioctl_g_ctrl(pdev->red_balance);
		ARGR(wb).manual_blue = ARGR(wb).read_blue =
			pwc_ioctl_g_ctrl(pdev->blue_balance);
		ARG_OUT(wb)
		break;
	}

	case VIDIOCPWCSAWBSPEED:
	{
		ARG_DEF(struct pwc_wb_speed, wbs)

		if (ARGR(wbs).control_speed > 0) {
			ret = pwc_set_wb_speed(pdev, ARGR(wbs).control_speed);
		}
		if (ARGR(wbs).control_delay > 0) {
			ret = pwc_set_wb_delay(pdev, ARGR(wbs).control_delay);
		}
		break;
	}

	case VIDIOCPWCGAWBSPEED:
	{
		ARG_DEF(struct pwc_wb_speed, wbs)

		ret = pwc_get_wb_speed(pdev, &ARGR(wbs).control_speed);
		if (ret < 0)
			break;
		ret = pwc_get_wb_delay(pdev, &ARGR(wbs).control_delay);
		if (ret < 0)
			break;
		ARG_OUT(wbs)
		break;
	}

	case VIDIOCPWCSLED:
	{
		ARG_DEF(struct pwc_leds, leds)

		ARG_IN(leds)
		ret = pwc_set_leds(pdev, ARGR(leds).led_on, ARGR(leds).led_off);
		break;
	}

	case VIDIOCPWCGLED:
	{
		ARG_DEF(struct pwc_leds, leds)

		ret = pwc_get_leds(pdev, &ARGR(leds).led_on, &ARGR(leds).led_off);
		ARG_OUT(leds)
		break;
	}

	case VIDIOCPWCSCONTOUR:
	{
		ARG_DEF(int, contour)
		ARG_IN(contour)
		ret = v4l2_ctrl_s_ctrl(pdev->autocontour, ARGR(contour) < 0);
		if (ret == 0 && ARGR(contour) >= 0)
			ret = pwc_ioctl_s_ctrl(pdev->contour, ARGR(contour));
		break;
	}

	case VIDIOCPWCGCONTOUR:
	{
		ARG_DEF(int, contour)
		if (v4l2_ctrl_g_ctrl(pdev->autocontour))
			ARGR(contour) = -1;
		else
			ARGR(contour) = pwc_ioctl_g_ctrl(pdev->contour);
		ARG_OUT(contour)
		break;
	}

	case VIDIOCPWCSBACKLIGHT:
	{
		ARG_DEF(int, backlight)
		ARG_IN(backlight)
		ret = v4l2_ctrl_s_ctrl(pdev->backlight, ARGR(backlight));
		break;
	}

	case VIDIOCPWCGBACKLIGHT:
	{
		ARG_DEF(int, backlight)
		ARGR(backlight) = v4l2_ctrl_g_ctrl(pdev->backlight);
		ARG_OUT(backlight)
		break;
	}

	case VIDIOCPWCSFLICKER:
	{
		ARG_DEF(int, flicker)
		ARG_IN(flicker)
		ret = v4l2_ctrl_s_ctrl(pdev->flicker, ARGR(flicker));
		break;
	}

	case VIDIOCPWCGFLICKER:
	{
		ARG_DEF(int, flicker)
		ARGR(flicker) = v4l2_ctrl_g_ctrl(pdev->flicker);
		ARG_OUT(flicker)
		break;
	}

	case VIDIOCPWCSDYNNOISE:
	{
		ARG_DEF(int, dynnoise)
		ARG_IN(dynnoise)
		ret = v4l2_ctrl_s_ctrl(pdev->noise_reduction, ARGR(dynnoise));
		break;
	}

	case VIDIOCPWCGDYNNOISE:
	{
		ARG_DEF(int, dynnoise)
		ARGR(dynnoise) = v4l2_ctrl_g_ctrl(pdev->noise_reduction);
		ARG_OUT(dynnoise);
		break;
	}

	case VIDIOCPWCGREALSIZE:
	{
		ARG_DEF(struct pwc_imagesize, size)

		ARGR(size).width = pdev->image.x;
		ARGR(size).height = pdev->image.y;
		ARG_OUT(size)
		break;
	}

	case VIDIOCPWCMPTRESET:
	{
		if (pdev->features & FEATURE_MOTOR_PANTILT)
		{
			ARG_DEF(int, flags)

			ARG_IN(flags)
			ret = pwc_mpt_reset(pdev, ARGR(flags));
		}
		else
		{
			ret = -ENXIO;
		}
		break;
	}

	case VIDIOCPWCMPTGRANGE:
	{
		if (pdev->features & FEATURE_MOTOR_PANTILT)
		{
			ARG_DEF(struct pwc_mpt_range, range)

			ARGR(range) = pdev->angle_range;
			ARG_OUT(range)
		}
		else
		{
			ret = -ENXIO;
		}
		break;
	}

	case VIDIOCPWCMPTSANGLE:
	{
		int new_pan, new_tilt;

		if (pdev->features & FEATURE_MOTOR_PANTILT)
		{
			ARG_DEF(struct pwc_mpt_angles, angles)

			ARG_IN(angles)
			/* The camera can only set relative angles, so
			   do some calculations when getting an absolute angle .
			 */
			if (ARGR(angles).absolute)
			{
				new_pan  = ARGR(angles).pan;
				new_tilt = ARGR(angles).tilt;
			}
			else
			{
				new_pan  = pdev->pan_angle  + ARGR(angles).pan;
				new_tilt = pdev->tilt_angle + ARGR(angles).tilt;
			}
			ret = pwc_mpt_set_angle(pdev, new_pan, new_tilt);
		}
		else
		{
			ret = -ENXIO;
		}
		break;
	}

	case VIDIOCPWCMPTGANGLE:
	{

		if (pdev->features & FEATURE_MOTOR_PANTILT)
		{
			ARG_DEF(struct pwc_mpt_angles, angles)

			ARGR(angles).absolute = 1;
			ARGR(angles).pan  = pdev->pan_angle;
			ARGR(angles).tilt = pdev->tilt_angle;
			ARG_OUT(angles)
		}
		else
		{
			ret = -ENXIO;
		}
		break;
	}

	case VIDIOCPWCMPTSTATUS:
	{
		if (pdev->features & FEATURE_MOTOR_PANTILT)
		{
			ARG_DEF(struct pwc_mpt_status, status)

			ret = pwc_mpt_get_status(pdev, ARGA(status));
			ARG_OUT(status)
		}
		else
		{
			ret = -ENXIO;
		}
		break;
	}

	case VIDIOCPWCGVIDCMD:
	{
		ARG_DEF(struct pwc_video_command, vcmd);

		ARGR(vcmd).type = pdev->type;
		ARGR(vcmd).release = pdev->release;
		ARGR(vcmd).command_len = pdev->cmd_len;
		memcpy(&ARGR(vcmd).command_buf, pdev->cmd_buf, pdev->cmd_len);
		ARGR(vcmd).bandlength = pdev->vbandlength;
		ARGR(vcmd).frame_size = pdev->frame_size;
		ARG_OUT(vcmd)
		break;
	}
	/*
	case VIDIOCPWCGVIDTABLE:
	{
		ARG_DEF(struct pwc_table_init_buffer, table);
		ARGR(table).len = pdev->cmd_len;
		memcpy(&ARGR(table).buffer, pdev->decompress_data, pdev->decompressor->table_size);
		ARG_OUT(table)
		break;
	}
	*/

	default:
		ret = -ENOIOCTLCMD;
		break;
	}

	if (ret > 0)
		return 0;
	return ret;
}

/* vim: set cinoptions= formatoptions=croql cindent shiftwidth=8 tabstop=8: */